.Net Core 使用Nlog 记录日志

一、使用Nlog将日志记录到TXT文本中

参考:https://www.cnblogs.com/qmhuang/p/8305915.html

  • 1、安装两个Nugget包:NLogNLog.Web.AspNetCore
    如下图:

    .Net Core 使用Nlog 记录日志_第1张图片
    Nlog安装后的效果

  • 2、新建Nlog配置文件Nlog.Config,将如下内容放在文件里

    
    
      
      
        
        
    
        
        
      
      
        
        
    
        
        
        
      
    
    
  • 3、修改Startup,注入Nlog和引入Nlog.Config

      // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
      public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
      {
          //使用NLog作为日志记录工具
          loggerFactory.AddNLog();
          //引入Nlog配置文件
          env.ConfigureNLog("nlog.config");
    
          if (env.IsDevelopment())
          {
              app.UseDeveloperExceptionPage();
          }
          else
          {
              app.UseHsts();
          }
    
          app.UseHttpsRedirection();
          app.UseMvc();
      }
    
  • 效果如下图:


    .Net Core 使用Nlog 记录日志_第2张图片
    新增高亮部分的代码
  • 4、在接口中依赖Nlog,记录日志

      private ILogger logger;
      //依赖Nlog
      public ValuesController(ILogger _logger)
      {
          logger = _logger;
      }
    
    
      // GET api/values
      [HttpGet]
      public ActionResult> Get()
      {
          logger.LogError("自定义记录日志");//使用Nlog记录
    
          return new string[] { "value1", "value2" };
      }
    
.Net Core 使用Nlog 记录日志_第3张图片
使用说明
二、使用Nlog将日志记录到sql server数据库
  • 1、安装Nugget包:NLog.Web.AspNetCore
    效果如下:

    图片.png

  • 2、新建Nlog配置文件Nlog.Config,将如下内容放在文件里

.Net Core 使用Nlog 记录日志_第4张图片
新建完Nlog文件,配置其属性
        
      

        
        
        

        
        

          

          

          
          

          

          

          
            ${var:connectionString}
            
              INSERT INTO [dbo].[Error]
              ([Application]
              ,[Level]
              ,[Logger]
              ,[Callsite]
              ,[RequestHeaders]
              ,[RequestBody]
              ,[RequestURL]
              ,[Response]
              ,[Referrerurl]
              ,[Action]
              ,[Message]
              ,[Exception]
              ,[Operatingtime]
              ,[ServerAddress]
              ,[RemoteAddress])
              VALUES
              (@application
              ,@levels
              ,@logger
              ,@callSite
              ,@requestHeaders
              ,@requestBody
              ,@requestURL
              ,@response
              ,@referrerurl
              ,@action
              ,@message
              ,@exception
              ,@operatingtime
              ,@serverAddress
              ,@remoteAddress);
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
          


        

        
          

          

          
          
          

          
          
          
          


        
      
  • 3、全局配置Nlog

  • Startup文件中添加配置

          NLog.LogManager.LoadConfiguration("Nlog.Config").GetCurrentClassLogger();
          NLog.LogManager.Configuration.Variables["connectionString"] = Configuration.GetConnectionString("Test");
    
  • Program文件中使用Nlog

    .UseNLog();
    

全部配置如下图:


.Net Core 使用Nlog 记录日志_第5张图片
全局配置Nlog

appsettings.json文件内容如下:

  {
    "ConnectionStrings": {
      "Test": "Server=.; Initial Catalog=TestDB; Persist Security Info=True; User ID=**; Password=***;"
    },
    "Logging": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "AllowedHosts": "*"
  }
  • 4、使用方法

方法一:

private readonly Logger _logger = LogManager.GetCurrentClassLogger();
var logEventInfo = new LogEventInfo() { };
        logEventInfo.Properties["requestBody"] = "requestBody";
        logEventInfo.Properties["exception"] = "exception";
        logEventInfo.Properties["message"] = "context.Exception.Message";
        logEventInfo.Properties["response"] = "response.ToJSON()";

        _logger.Log(LogLevel.Error, logEventInfo);

方法二:

        NLog.Logger logger = LogManager.GetCurrentClassLogger();

        var logEventInfo = new LogEventInfo() { };
        logEventInfo.Properties["requestBody"] = "requestBody";
        logEventInfo.Properties["exception"] = "exception";
        logEventInfo.Properties["message"] = "context.Exception.Message";
        logEventInfo.Properties["response"] = "response.ToJSON()";

        //_logger.Log(LogLevel.Error, logEventInfo);
         logger.Log(LogLevel.Error, logEventInfo);
三、其他
  • 网络参考资料
    1、Nlog 在.net core中 记录请求上下文的标识符
  • 官方参考资料
    https://github.com/nlog/NLog/wiki/Layout%20Renderers
    https://github.com/nlog/NLog/wiki/Targets
    https://github.com/NLog/NLog/releases/
    http://nlog-project.org/

LogCritical,用来记录严重的事情
LogDebug,记录调试信息
LogError,记录异常
LogInformation,记录信息性的事情
LogTrace,记录追踪信息
LogWarning,记录警告信息

下面是ASP.NET Core里面定义的LogLevel(它是个枚举), 按严重性从低到高排序的:

Trace = 0, 它可以包含敏感拘束, 默认在生产环境中它是被禁用掉的.

Debug = 1, 也是在调试使用, 应该在生产环境中禁用, 但是遇到问题需要调试可以临时启用.

Information = 2, 用来追踪应用程序的总体流程.

Warning = 3, 通常用于记录非正常或意外的事件, 也可以包括不会导致应用程序停止的错误和其他事件, 例如验证错误等.

Error = 4, 用于记录无法处理的错误和异常, 这些信息意味着当前的活动或操作发生了错误, 但不是应用程序级别的错误.

Critical = 5, 用于记录需要立即处理的事件, 例如数据丢失或磁盘空间不足.

None = 6, 如果你不想输出日志, 你可以把程序的最低日志级别设置为None, 此外还可以用来过滤日志.

非常有用的学习例子:https://www.cnblogs.com/bijinshan/p/9140111.html

你可能感兴趣的:(.Net Core 使用Nlog 记录日志)