1. 啟動應用程序日志配置
修改Program.cs
,在WebHostBuilder構建時配置日志
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(LogLevel.Information);
logging.AddConsole();
}).UseNLog();
其中,UseNLog是拓展方法,需要引入NLog.Web.AspNetCore
2. 新增配置文件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">
<targets>
<target name="defaultlog" xsi:type="File" keepFileOpen="false" encoding="utf-8"
fileName="${basedir}/logs/${level}/${shortdate}.log"
maxArchiveFiles="100"
layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />
<!--fileName值——表示在程序運行目錄,分日志級別按天寫入日志文件-->
<!--maxArchiveFiles值——日志文件最大數量,超出則刪除最早的文件-->
<!--layout值——日志內容格式:時間+日志級別+LoggerName+日志內容-->
</targets>
<rules>
<!--支持將任意級別、任意LoggerName的日志寫入target:defaultlog-->
<!--其中*就表示任意,可以改為"項目命名空間.*",則只輸出對應命名空間下的日志。在Info級別尤為明顯-->
<logger name="*" minlevel="trace" writeTo="defaultlog" />
</rules>
</nlog>
3. 實例化並使用
1)在控制器的構造方法賦值ILogger(親測可用)
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{ this._logger = logger; }
_logger.Info("一個Info級別的測試樣例");
_logger.Error("一個Error級別的測試樣例");
2)直接使用NLog.LogManager(可以忽略第一步)
//使用GetLogger獲取ILogger(暫無法成功輸出日志到文件)
//var logger = NLog.LogManager.GetLogger(LoggerName);
//使用GetCurrentClassLogger獲取ILogger
var logger = NLog.LogManager.GetCurrentClassLogger();
logger.Info("一個Info級別的測試樣例");
logger.Error("一個Error級別的測試樣例");
其中,LoggerName可以為當前調用的控制器名稱,也可以是當前調用的方法名稱,甚至任意文本。它主要作用是:顯示在文件中,方便查看報錯位置
本文學習自:
https://www.cnblogs.com/lonelyxmas/p/10669153.html
越努力越幸運,努力需要自制,希望自己能夠有更強的自制力!感恩自信自律!