ASP.NET 8 使用 NLog
NLog:https://github.com/NLog/NLog
详细使用可以看官方Wiki:https://github.com/NLog/NLog/wiki
首先 Nuget:
Install-Package NLog
Install-Package NLog.Web.AspNetCore
然后添加一个 Config 文件,用于配置 NLog
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogLevel="Info" internalLogFile="${basedir}/Logs/internal-nlog/internal-nlog-AspNetCore.txt"> <!-- enable asp.net core layout renderers --> <extensions> <add assembly="NLog.Web.AspNetCore"/> </extensions> <targets> <target name="AllLog" xsi:type="File" fileName="${basedir}/Logs/Log/${shortdate}.txt"/> <target name="TraceLog" xsi:type="File" fileName="${basedir}/Logs/Trace/${shortdate}.txt"/> <target name="DebugLog" xsi:type="File" fileName="${basedir}/Logs/Debug/${shortdate}.txt"/> <target name="ErrorLog" xsi:type="File" fileName="${basedir}/Logs/Error/${shortdate}.txt"/> </targets> <rules> <logger name="Microsoft.AspNetCore.Mvc.*" minlevel="Trace" maxlevel="Info" final="true" /> <logger name="Microsoft.AspNetCore.Routing.*" minlevel="Trace" maxlevel="Info" final="true" /> <logger name="Microsoft.AspNetCore.Hosting.*" minlevel="Trace" maxlevel="Info" final="true" /> <logger name="Microsoft.*" minlevel="Trace" maxlevel="Debug" final="true" /> <logger name="Microsoft.*" minlevel="Info" writeTo="AllLog" final="true" /> <logger name="*" minlevel="Info" maxlevel="Fatal" writeTo="AllLog" /> <logger name="*" levels="Debug" writeTo="DebugLog" /> <logger name="*" levels="Trace" writeTo="TraceLog" /> <logger name="*" minlevel="Error" maxlevel="Fatal" writeTo="ErrorLog" /> </rules> </nlog>
简单配置,其实比较简单
首先是 NLog 的一些配置
比如是否自动重载、NLog自己的日志记录级别及文件位置
targets:指定日志写入的方式,比如文件、数据库、日志服务器等等,这里就用了文件
rules:指定什么级别的日志,写入要求的 target 中
这里我定义里四种 target
AllLog 用来记录所有 Info 以上的信息
TraceLog 用来记录 Trace 信息
DebugLog 用来记录 Debug 信息
ErrorLog 用来记录 Error 以上的信息
下面在 rules 里进行具体的配置
首先是屏蔽一些 Microsoft 自身的日志输出
比如这里我屏蔽掉了 Microsoft.AspNetCore.Mvc、Routing、Hosting 从 Trace 到 Info 的日志
加上 final="true" ,表示这类日志在后续的 rules 里不再继续处理
然后指定对应级别的日志,写入到对应的 target 指定的的文件中
然后在 Program 中启用 NLog
#region 加载 NLOG builder.Logging.ClearProviders(); builder.Logging.AddNLog("Config/NLog.config"); builder.Host.UseNLog(); #endregion
然后在控制器里面尝试写入日志:
public IActionResult Index() { _logger.LogDebug("LogDebug"); _logger.LogTrace("LogTrace"); _logger.LogInformation("LogInformation"); _logger.LogWarning("LogWarning"); _logger.LogError("LogError"); _logger.LogCritical("LogCritical"); return View(); }
运行看下日志效果,主日志里成功记录了 Info 以上的信息:
作者:sun8134
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库