ASP.NET Core與NLog集成的完整步驟
來源:懂視網
責編:小采
時間:2020-11-27 22:35:03
ASP.NET Core與NLog集成的完整步驟
ASP.NET Core與NLog集成的完整步驟:前言 一直很喜歡 NLog 的簡潔和擴展性,所以準備將 ASP.NET Core 提供的默認日志提供程序替換成 NLog。 NLog 是一個跨平臺的 .Net 日志組件。 NLog 遵從 BSD license,即允許商業應用且完全開放源代碼。任何人都可以免費使用并對其進行測試,然后通過郵件列
導讀ASP.NET Core與NLog集成的完整步驟:前言 一直很喜歡 NLog 的簡潔和擴展性,所以準備將 ASP.NET Core 提供的默認日志提供程序替換成 NLog。 NLog 是一個跨平臺的 .Net 日志組件。 NLog 遵從 BSD license,即允許商業應用且完全開放源代碼。任何人都可以免費使用并對其進行測試,然后通過郵件列

前言
一直很喜歡 NLog 的簡潔和擴展性,所以準備將 ASP.NET Core 提供的默認日志提供程序替換成 NLog。
NLog 是一個跨平臺的 .Net 日志組件。
NLog 遵從 BSD license,即允許商業應用且完全開放源代碼。任何人都可以免費使用并對其進行測試,然后通過郵件列表反饋問題以及建議。
下面話不多說了,來一起看看詳細的介紹吧。
步驟 1
在項目的project.json中添加依賴NLog.Extensions.Logging:
"dependencies": {
"NLog.Extensions.Logging": "1.0.0-*"
}
或者通過NuGet程序包管理器添加。
步驟 2
在ASP.NET Core的啟動類Startup的Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
方法中添加:
// using NLog.Extensions.Logging;
loggerFactory.AddNLog();
//needed for non-NETSTANDARD platforms: configure nlog.config in your project root
env.ConfigureNLog("nlog.config");
步驟 3
在項目目錄下添加nlog.config文件:
<?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"
throwConfigExceptions="true"
internalLogLevel="Warn"
internalLogToTrace="true"
internalLogFile="AppData/Logs/NLogInternal.log">
<!--
- 日志文件被放置于 AppData/Logs 文件夾中,文件名為 {日志類目}.log 或 {日志類目}.err
- 日志按天存檔,放置于 AppData/Logs/Archives/{日志類目} 文件夾中,文件名為 {日期}.log 或 {日期}.err
-->
<targets>
<!-- 通過 System.Diagnostics.Trace
輸出由 EF 6 產生的數據庫日志可以在 VS 輸出窗口看到 -->
<target name="XXX.Entities.AppDbContext.DatabaseLog.Trace"
xsi:type="Trace"
layout="${message}"
/>
<!-- 在控制臺輸出由 EF 6 產生的數據庫日志 -->
<target name="XXX.Entities.AppDbContext.DatabaseLog.Console"
xsi:type="Console"
layout="${message}"
/>
<!-- 在日志文件輸出由 EF 6 產生的數據庫日志 -->
<target name="XXX.Entities.AppDbContext.DatabaseLog.File"
xsi:type="File"
layout="${message}"
encoding="utf-8"
archiveNumbering="Date"
archiveEvery="Day"
archiveDateFormat="yyyy-MM-dd"
archiveFileName="AppData/Logs/Archives/XXX.Entities.AppDbContext.Database/{#}.log"
fileName="AppData/Logs/XXX.Entities.AppDbContext.Database.log"
/>
<!-- 常規的 Trace 輸出,調試時可以在 VS 輸出窗口看到 -->
<target name="TRACE"
xsi:type="Trace"
layout="[${longdate}] ${pad:padding=-5:inner=${level:uppercase=true}} ${logger}: ${newline}${message}${onexception:inner=${newline}${exception:format=ToString}}${newline}" />
<!-- 常規的控制臺輸出 -->
<target name="CONSOLE"
xsi:type="Console"
layout="[${longdate}] ${pad:padding=-5:inner=${level:uppercase=true}} ${logger}: ${newline}${message}${onexception:inner=${newline}${exception:format=ToString}}${newline}" />
<!-- 常規的日志文件輸出 -->
<target name="LOG_FILE"
xsi:type="File"
layout="[${longdate}] ${pad:padding=-5:inner=${level:uppercase=true}} ${logger}: ${newline}${message}${onexception:inner=${newline}${exception:format=ToString}}${newline}"
encoding="utf-8"
archiveNumbering="Date"
archiveEvery="Day"
archiveDateFormat="yyyy-MM-dd"
archiveFileName="AppData/Logs/Archives/${filesystem-normalize:inner=${logger}}/{#}.log"
fileName="AppData/Logs/${filesystem-normalize:inner=${logger}}.log" />
<!-- 約定以 err 為文件后綴的日志文件記錄了程序輸出的警告或者錯誤。 -->
<target name="ERROR_LOG_FILE"
xsi:type="File"
layout="[${longdate}] ${pad:padding=-5:inner=${level:uppercase=true}} ${logger}: ${newline}${message}${onexception:inner=${newline}${exception:format=ToString}}${newline}"
encoding="utf-8"
archiveNumbering="Date"
archiveEvery="Day"
archiveDateFormat="yyyy-MM-dd"
archiveFileName="AppData/Logs/Archives/${filesystem-normalize:inner=${logger}}/{#}.err"
fileName="AppData/Logs/${filesystem-normalize:inner=${logger}}.err" />
</targets>
<rules>
<!-- 記錄所有日志級別不低于 Warn 的日志到日志文件 -->
<logger name="*" minlevel="Warn" writeTo="ERROR_LOG_FILE" />
<!-- 記錄 EF 生成的 SQL 語句 -->
<logger name="XXX.Entities.AppDbContext.DatabaseLog" minlevel="Debug"
writeTo="XXX.Entities.AppDbContext.DatabaseLog.Trace,XXX.Entities.AppDbContext.DatabaseLog.Console,XXX.Entities.AppDbContext.DatabaseLog.File" final="true" />
<!-- 除非調試需要,把 .NET Core 程序集的 Debug 輸出都屏蔽 -->
<logger name="Microsoft.*" minLevel="Info" writeTo="CONSOLE,TRACE,LOG_FILE" final="true" />
<!-- 除非調試需要,把系統的 Debug 輸出都屏蔽 -->
<logger name="System.*" minLevel="Info" writeTo="CONSOLE,TRACE,LOG_FILE" final="true" />
<!-- 記錄應用程序的 Debug 輸出 -->
<logger name="MyApplication.*" minlevel="Debug" writeTo="TRACE,CONSOLE,LOG_FILE" />
</rules>
</nlog>
NLog 配置文件屬性解讀:
autoReload 是否監視配置文件的變化并自動加載。
throwConfigExceptions 是否在配置出錯時拋出異常。
internalLogLevel NLog 內部日志級別。
internalLogToTrace 是否將 NLog 內部日志輸出到 Trace。
internalLogFile NLog 內部日志輸出到文件的路徑。
步驟 4
在project.json文件中的publishOptions.include節內添加"nlog.config":
"publishOptions": {
"include": [
"wwwroot",
"Views",
"Areas/**/Views",
"appsettings.json",
"web.config",
"nlog.config"
]
}
總結
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
ASP.NET Core與NLog集成的完整步驟
ASP.NET Core與NLog集成的完整步驟:前言 一直很喜歡 NLog 的簡潔和擴展性,所以準備將 ASP.NET Core 提供的默認日志提供程序替換成 NLog。 NLog 是一個跨平臺的 .Net 日志組件。 NLog 遵從 BSD license,即允許商業應用且完全開放源代碼。任何人都可以免費使用并對其進行測試,然后通過郵件列