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 以上的信息: