一闷袒、NLog 簡介
NLog 是一個基于.NET 平臺編寫的類庫囊骤,我們可以適應NLog在應用程序中添加極為完善的跟蹤代碼也物。
NLog是一個簡單靈活的.NET日志記錄類庫滑蚯。通過使用NLog,我們可以在任何一種.NET語言中輸出帶有上下文的(contextual information)調試診斷信息斥赋,根據(jù)喜好配置其表現(xiàn)樣式之后發(fā)送到一個或多個輸出目標(target)中疤剑。
二隘膘、NLog安裝配置
安裝NuGet包:NLog和NLog.Web.AspNetCore
并新增 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" internalLogLevel="Info">
<!-- 啟用.net core的核心布局渲染器 -->
<extensions>
<add assembly="NLog.Web.AspNetCore" />
</extensions>
<!-- 寫入日志的目標配置 -->
<targets>
<!-- 調試 -->
<target xsi:type="File" name="debug" fileName="logs/debug-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
<!-- 警告 -->
<target xsi:type="File" name="warn" fileName="logs/warn-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
<!-- 錯誤 -->
<target xsi:type="File" name="error" fileName="logs/error-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
</targets>
<!-- 映射規(guī)則 -->
<rules>
<!-- 調試 -->
<logger name="*" minlevel="Trace" maxlevel="Debug" writeTo="debug" />
<!--跳過不重要的微軟日志-->
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<!-- 警告 -->
<logger name="*" minlevel="Info" maxlevel="Warn" writeTo="warn" />
<!-- 錯誤 -->
<logger name="*" minlevel="Error" maxlevel="Fatal" writeTo="error" />
</rules>
</nlog>
在Program.cs類中注入
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using NLog.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace NLog.Demo
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
}).UseNLog();
}
}
三吨悍、NLog基本使用
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
_logger.LogError("錯誤信息育瓜!");
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
日志文件輸出地址:bin\Debug\netcoreapp3.1\logs\日志文件