Logging简介(1)

发布时间 2023-12-21 09:04:08作者: 落花流水1173

Logging:日志系统,用来记录软件系统,用于异常分析

日志级别:Trace<Debug(调试)<Information(信息)<Warning(提醒、警告)<Error(错误)<Critical(关键、生死攸关),可根据实际情况对每一条日志使用不同的级别

日志提供者(LoggingProvider):把日志输出到哪里:控制台、文件、数据库、邮箱、短信、微信等

这篇文件讲解输出到控制台的日志:

1、安装Nuget包:Microsoft.Extensions.Logging,日志系统基础包

2、安装Nuget包:Microsoft.Extensions.Logging.Console,控制台日志输出

3、需要使用Log的类,通过DI注入ILogger<T>即可,T一般就用当前类,这个类的名字会输出到日志,方便定位错误

 public class Test
 {
    private readonly ILogger<Test> logger;

     public Test(ILogger<Test> logger)//通过DI注入
     {
         this.logger = logger;
     }

     public void Run()
     {
         logger.LogDebug("准备登录");
         logger.LogWarning("校验失败");
         logger.LogWarning("再次校验失败");
         logger.LogError("多次登录失败");

         try
         {
             string str = null;
             str.Substring(0, 2);
         }
         catch (Exception ex)
         {
             logger.LogCritical(ex, "critical");//可以输出异常信息
         }
     }
 }

4、通过DI注册到容器 services.AddLogging(logBuilder=>{logBuilder.AddConsole();//可多个Provider

static void Main(string[] args)
{
    ServiceCollection services = new ServiceCollection();
    services.AddLogging(loggingBuilder=> {
        loggingBuilder.AddConsole();
     
        loggingBuilder.SetMinimumLevel(LogLevel.Debug);

        });
    services.AddScoped<Test>();

    using(var sp=services.BuildServiceProvider())
    {
       var test= sp.GetRequiredService<Test>();
        test.Run();
    }
}

运行结果:

 

EventLog:事件日志,是另外一种LoggingProvider,可以把日志记录到window电脑上(Linux上不可以),并使用事件查看器进行查询

1、安装Nuget包:Microsoft.Extensions.Logging.EventLog

2、在容器中添加 loggingBuilder.AddEventLog()

static void Main(string[] args)
{
    ServiceCollection services = new ServiceCollection();
    services.AddLogging(loggingBuilder=> {
        loggingBuilder.AddConsole();//控制台日志
        loggingBuilder.AddEventLog();//事件日志
        loggingBuilder.SetMinimumLevel(LogLevel.Debug);

        });
    services.AddScoped<Test>();

    using(var sp=services.BuildServiceProvider())
    {
       var test= sp.GetRequiredService<Test>();
        test.Run();
    }
}

注意,AddLogging是运行注册多个日志提供者的

运行后,找到事件查看器,可以看到Window日志中多出了几条日志,正是我们软件运行的日志