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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。