.NET Core 下使用NLog记录日志
NLog 是一个免费的日志记录平台,适用于与各种.NET平台,包括 .NET standard。NLog可以写入多个目标(文件,数据库,控制台,邮件)。并且可以及时更改日志记录配置 。
添加NLog引用
在程序包管理控制台运行下面命令安装NLog包,也可以通过NuGet包管理器搜索NLog.Extensions.Logging 进行安装。
Install-Package NLog.Extensions.Logging -Pre
在项目中添加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="Warn"
internalLogFile="internal-nlog.txt">
<extensions>
<!-- load NLog.Extended to enable ASP.NET-specific functionality -->
<add assembly="NLog.Extended" />
</extensions>
<!-- define various log targets -->
<targets>
<!-- write logs to file -->
<target xsi:type="File" name="file" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${aspnet-request:servervariable=URL} ${uppercase:${level}} ${message}" />
<target xsi:type="File" name="ownFile-web" fileName="${basedir}/logs/own-${shortdate}.log" layout="${longdate} ${aspnet-request:servervariable=URL} ${uppercase:${level}} ${message}" />
<target xsi:type="Null" name="blackhole"/>
</targets>
<rules>
<!-- All logs,including from microsoft -->
<logger name="*" minlevel="Trace" writeTo="file"/>
<!--Skip Microsoft logs and so log only own logs -->
<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
<logger name="*" minlevel="Trace" writeTo="ownFile-web"/>
</rules>
</nlog>
在Startup.cs -> Configure方法中添加NLog服务
public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
{
// 注册编码,防止中文乱码
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
loggerFactory.AddNLog();
}
使用NLog记录日志
在configure方法中添加了NLog服务后,因为 .net core自身的Dependency injection(依赖注入),可以允许在控制器中注入logger进行日志记录
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
}
NLog记录日志方式
public IActionResult Index()
{
_logger.LogInformation("info:你访问了首页");
_logger.LogWarning("warn:警告信息");
_logger.LogError("error:错误信息");
return View();
}
运行应用程序则会根据nlog.config配置文件的输出方式进行日志的输出。
这就是在 .net core 中使用NLog进行日志的记录。