.NET Core使用Nlog记录日志

1.引入Nuget包

      Nlog

      Nlog.Web.AspNetCore

2.添加nlog配置文件

<?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">
     <!--define various log targets-->
     <targets>
        <!--write logs to file-->
         <target xsi:type="File" name="allfile" fileName="nlog-all-${shortdate}.log"
                  layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
    
         <target xsi:type="File" name="ownFile-web" fileName="nlog-my-${shortdate}.log"
                  layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
        <target xsi:type="Null" name="blackhole" />
  </targets>
     <rules>
         <!--All logs, including from Microsoft-->
         <logger name="*" minlevel="Trace" writeTo="allfile" />
    
       <!--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>

3.在StartUp.cs中配置nlog

public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
        {
            app.UseStaticFiles();
            //使用NLog作为日志记录工具
            loggerFactory.AddNLog();
            //引入Nlog配置文件
            env.ConfigureNLog("nlog.config");
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            } 
            app.UseMvc();
        }

4.在程序中中使用nlog写日志

下面是注入到控制器中的示例

public class ValuesController : Controller
    {
     
        private ILogger<ValuesController> logger;
        public ValuesController(ILogger<ValuesController> _logger)
        {
            logger = _logger;
        }
        // GET api/values
        [HttpGet]
        public string Get()
        {
            logger.LogError("123");
            return "value";
        }

5.日志文件生成在指定目录下

大家会发现文件是生成在项目目录下的,日志多的时候,会导致文件目录太乱

此时,只需更改nlog.config中的内容如下即可生成在logs目录里

<targets>
        <!--write logs to file-->
         <target xsi:type="File" name="allfile" fileName="logs/all/nlog-all-${shortdate}.log"
                  layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
    
         <target xsi:type="File" name="ownFile-web" fileName="logs/my/nlog-my-${shortdate}.log"
                  layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" />
        <target xsi:type="Null" name="blackhole" />
  </targets>

猜你喜欢

转载自blog.csdn.net/LanSeTianKong12/article/details/84837522