zoukankan      html  css  js  c++  java
  • ASP.Net Core -- Logging

    ASP.Net Core里的LOG系统

      • EventSource

      • ILogger

      • DiagnosticSource

    EventSource和DiagnosticSource是ASP.Net Core默认的,它会默认使用这两个,今天主要学习ILogger,它是基于Providers提供商,比如内置的有控制台提供商,等等。当然,我们自己也可以对其扩展,也可以使用第三方的Logger内置的Log Providers

    内置的Log Providers

       •  Console

       •  Debug

       •  EventSource

       •  EventLog

       •  TraceSource

       •  Azure App Service

    Log等级:

        •  Trace

       •  Debug

       •  Information

       •  Warning

       •  Error

       •  Critical

    在进行记录日志的时候,还有一些选项参数,比如,分类,Event Id,格式化字符串

    代码示例

    先看一下源码,在Program.cs文件里对CreateDefaultBuilder进行反编译,可以看到如下:

    可以看到里边已经有一些配置好的,如果我们想自己配置的话,可以在外边调用ConfigureLogging这个方法,来手动添加,比如只想要一个Console,如下:

    怎么用Logger呢?比如我需要在HomeController.cs里使用,如下:

    先注入:

    public readonly IRepository<Student> _repository;
            private readonly HostingEnvironment _hostingEnvironment;
            private readonly ILogger<HomeController> _logger;
    
            public HomeController(IRepository<Student> repository,HostingEnvironment hostingEnvironment,ILogger<HomeController> logger)
            {
                _repository = repository;
                _hostingEnvironment = hostingEnvironment;
                _logger = logger;
            }
    

    然后在Index方法里使用一下,如下:

    先新建一个类,名为MyLogEventIds.cs,如下:

    public class MyLogEventIds
    {
        public const int HomePage = 1000;
    }
    

    然后使用:

    public IActionResult Index() 
    {
         _logger.LogInformation(MyLogEventIds.HomePage, "visiting home index......");
    
         return View();
    }
    

    可以在控制台看到: 

     

    基本格式就是这样,一共就三部分内容,一个是分类,一个是ID,一个是信息,有时候信息里边我们要加一些参数,如下:

    int id = 10;
    
     _logger.LogInformation(MyLogEventIds.HomePage, "visiting home index {0}", id);

    注意:参数形式建议使用占位符,不建议使用$语法。

    再看一下配置文件里的Log配置,先看appsettings.json文件:

    "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
    

    再看看appsettings.Development.json文件:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Debug",
          "System": "Information",
          "Microsoft": "Information"
        }
      }
    }
    

    可以表明,Debug级别以上的可以使用Log,一下的就不能了,比如说:

    _logger.Trace(MyLogEventIds.HomePage, "visiting home index {0}", id);

    这就没什么作用了。

    第三方Log Provider

       • Serilog

       • NLog

       • EImah

    在ASP.Net Core中用的比较多的就是第一个,所以这里学习一下Serilog,首先安装Serilog,打开Nuget,如下:

    搜索Serilog.aspnetcore,如下:

    然后搜索Serilog.sinks,这个有很多,主要是用来将日志输出到哪里,比如,输出到控制台,输出在文本文件里等等,如下:

    这里安装前两个,可以输出在控制台和文件里。

    然后配置Serilog,在Main方法里配置:

    public static void Main(string[] args)
            {
                Log.Logger = new LoggerConfiguration()
                    .MinimumLevel.Debug()
                    .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                    .Enrich.FromLogContext()
                    .WriteTo.Console()
                    .WriteTo.File(Path.Combine("logs", "log.txt"), rollingInterval: RollingInterval.Day)
                    .CreateLogger();
    
                CreateWebHostBuilder(args).Build().Run();
            }
    

    最小级别是Debug,如果遇到Microsoft这个命名空间,它的最小级别是Information,下边两个WriteTo属于输出媒介,可以输出到控制台,也可以输出在log.txt文本文件里,rollingInterval: RollingInterval.Day代表每天生成一个文件,可以修改,比如每分钟Minute,下边测试就使用Minute

    然后使用:

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseSerilog()
                    .UseStartup<Startup>();
    

    启动项目,打开控制台:

    可以看到,颜色都变了。再看一下目录:

    里边就是输出的日志详情。

     

  • 相关阅读:
    2020.10.23 19级training 补题报告
    2020.10.17 天梯赛练习 补题报告
    2020.10.16 19级training 补题报告
    2020.10.9 19级training 补题报告
    2020.10.10 天梯赛练习 补题报告
    2020.10.3 天梯赛练习 补题报告
    2020.10.2 19级training 补题报告
    第十届山东省ACM省赛复现补题报告
    VVDI Key Tool Plus Adds VW Passat 2015 Key via OBD
    Xhorse VVDI Prog Software V5.0.3 Adds Many MCUs
  • 原文地址:https://www.cnblogs.com/dcy521/p/13570989.html
Copyright © 2011-2022 走看看