1. 在nuget中安装NLog和NLog.Web.AspNetCore
2. 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">
<!-- 要写入的目标 -->
<targets>
<!-- 将日志写入文件 -->
<target xsi:type="File" name="allfile" fileName="${basedir}/logs/all/${level}${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id:whenEmpty=0}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
<!-- 另一个文件日志,只有自己的日志。 使用一些ASP.NET Core渲染器 -->
<target xsi:type="File" name="ownFile-web" fileName="${basedir}/logs/my/${level}${shortdate}.log"
layout="${longdate}
|${level}
|信息:${message}
|url: ${aspnet-request-url}
" />
</targets>
<!--备用配置-->
<!--<target xsi:type="File" name="ownFile-web" fileName="${basedir}/logs/my/${level}${shortdate}.log"
layout="${longdate}
|${level}
|${logger}
|信息:${message}
|url: ${aspnet-request-url}
|调用函数: ${aspnet-mvc-action}
|${callsite}
" />
</targets>-->
<!--从记录器名称映射到目标的规则-->
<rules>
<!--所有日志,包括来自Microsoft的日志-->
<logger name="*" minlevel="Trace" writeTo="allfile" />
<!--跳过非关键的Microsoft日志,因此仅记录自己的日志-->
<logger name="Microsoft.*" maxlevel="Info" final="true" />
<!-- BlackHole -->
<logger name="*" minlevel="Trace" writeTo="ownFile-web" />
</rules>
</nlog>
4. Program.cs 中添加代码
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://*:8010")
.UseStartup<Startup>()
.ConfigureLogging(logging =>
{
logging.ClearProviders(); //移除已经注册的其他日志处理程序
logging.SetMinimumLevel(LogLevel.Trace); //设置最小的日志级别
})
.UseNLog()
;
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://*:8010")
.UseStartup<Startup>()
.ConfigureLogging(logging =>
{
logging.ClearProviders(); //移除已经注册的其他日志处理程序
logging.SetMinimumLevel(LogLevel.Trace); //设置最小的日志级别
})
.UseNLog();
5. 使用
//引用
using NLog;
//注意不是 using Microsoft.Extensions.Logging;
//初始化
private readonly ILogger _logger = LogManager.GetLogger("信息");
//调用
_logger.Info($"{DateTime.Now} -服务启动");
相关连接