.NET Core 下使用NLog记录日志

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cherish12_24/article/details/82762614


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进行日志的记录。

展开阅读全文

没有更多推荐了,返回首页