前言

Asp.Net Core日志中Logging篇

1.1引用

创建ASP.NET Core程序,程序会自带Microsoft.Extensions.Logging,如果没有,请在Nuget安装

1.2配置文件

在你项目中,找到appsetting.json文件,打开后,如下图:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
    }
  },

    "AllowedHosts": "*"
  }

你肯定会很疑惑,这些配置是什么意思,为啥要这样写?

Logging:是日志配置的默认名称,如果想自定义,也是可以,后面会演示
LogLevel:日志级别(日志的输出是有输出级,如下图所示)
Default:默认级别
Microsoft:系统级别
Microsoft.Hosting.Lifetime:生命时间基本
    public enum LogLevel
    {
        //应用程序数据。 这些消息默认情况下处于禁用状态,并且永远不应在生产环境中启用。
        Trace,
        //在开发过程中用于交互式调查的日志。 这些日志应该主要包含对调试有用的信息,并且没有长期的信息
        Debug,
        //跟踪应用程序一般流程的日志。 这些日志应具有长期
        Information,
        //在应用程序流中突出显示异常或意外事件的日志,但不会导致应用程序执行停止。
        Warning,
        //突出显示由于故障而停止当前执行流的日志。这些应表明当前活动失败,而不是整个应用程序范围内的失败。
        Error,
        //描述不可恢复的应用程序或系统崩溃或灾难性事件的日志,必须立即引起注意的故障。
        Critical,
        //不用于编写日志消息。 指定不应将日志记录类别
        None
    }

优先等级从上到下递减Trace<Debug<Information<Warning<Error<Critical<None

1.4如何封装自己定义的日志结构?

  /// <summary>
    /// 日志辅助类
    /// </summary>
public class LoggerHelper
    {
        ILogger<LoggerHelper> _logger;
        public LoggerHelper(ILogger<LoggerHelper> logger)
        {
            _logger = logger;
        }

        public void LogInformation(string msg)
        {
            _logger.LogInformation(Write(msg));
        }
        public void LogDebug(string msg)
        {
            _logger.LogDebug(Write(msg));
        }
        public void LogError(string msg)
        {
            _logger.LogError(Write(msg));
        }
        public void LogWarning(string msg)
        {
            _logger.LogWarning(Write(msg));
        }

        protected string Write(string msg)
        {
            return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":" + msg;
        }
    }
    public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddTransient<LoggerHelper>();
        }
private readonly LoggerHelper _logger;

        public WeatherForecastController(LoggerHelper logger)
        {
            _logger = logger;
        }
       _logger.LogInformation("LogInformation"+Guid.NewGuid().ToString("N"));
                _logger.LogDebug("LogDebug" + Guid.NewGuid().ToString("N"));
                _logger.LogWarning("LogWarning" + Guid.NewGuid().ToString("N"));
                _logger.LogError("LogError" + Guid.NewGuid().ToString("N"));
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
       "LoggerHelper": "Information"
    },
    "Console": {
      "IncludeScopes": true
    }
  },
  • "IncludeScopes": true是什么意思?
    答:记录日志的 scope 信息, 对于 DeveloperExceptionPageMiddleware ,会在日志中记录 ConnectionId, RequestId, RequestPath。
  • "LoggerHelper": "Information"是什么意思?
    答:LoggerHelper就是我们自定义类,设置我们自己封装日志的日志级别
  • 怎么理解日志中的信息?
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://localhost:5000

答:info:日志级别;Microsoft.Hosting.Lifetime[0]:日志作用域;Now listening on: http://localhost:5000日志内容

总结:

09-25 05:06