zoukankan      html  css  js  c++  java
  • 在 ASP.NET Core 中使用 Serilog 进行日志记录

    从 NuGet 安装 Serilog

    核心的包是 SerilogSerilog.AspNetCore
    常用的还有 Serilog.Sinks.Console 控制台日志打印 和 Serilog.Sinks.File 文件日志打印。

    PM> Install-Package Serilog
    PM> Install-Package Serilog.AspNetCore
    PM> Install-Package Serilog.Sinks.Console
    PM> Install-Package Serilog.Sinks.File
    

    在 Main函数 中配置 Serilog

    在 Main 函数的代码大概如下,应该是够用了,如需其他配置请参考 Serilog官方文档

        public static void Main(string[] args)
        {
        	// 配置 Serilog 
            Log.Logger = new LoggerConfiguration()
                // 最小的日志输出级别
                .MinimumLevel.Information()
                // 日志调用类命名空间如果以 Microsoft 开头,覆盖日志输出最小级别为 Information
                .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                .Enrich.FromLogContext()
                // 配置日志输出到控制台
                .WriteTo.Console()
                // 配置日志输出到文件,文件输出到当前项目的 logs 目录下
                // 日记的生成周期为每天
                .WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day)
                // 创建 logger
                .CreateLogger();
    		
            CreateWebHostBuilder(args).Build().Run();
        }
    
        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            // 将 Serilog 设置为日志记录提供程序
            .UseSerilog();
    

    或者

        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }
    
        public static IWebHostBuilder CreateWebHostBuilder (string[] args) {
            return WebHost.CreateDefaultBuilder (args)
                .UseStartup<Startup> ()
                .UseSerilog ((context, configuration) => {
                    configuration
                        .MinimumLevel.Information()
                        // 日志调用类命名空间如果以 Microsoft 开头,覆盖日志输出最小级别为 Information
                        .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                        .Enrich.FromLogContext()
                        // 配置日志输出到控制台
                        .WriteTo.Console()
                        // 配置日志输出到文件,文件输出到当前项目的 logs 目录下
                        // 日记的生成周期为每天
                        .WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day)
                        // 创建 logger
                        .CreateLogger();
                });
        }
    

    在项目中使用 Serilog 进行日志输出

    使用 Serilog 时,直接使用 ILogger 即可,因为此服务项目应该是默认注入了,此处需要依赖关系注入知识。
    如你不了解依赖关系注入,请看 微软官方文档

        [Route("api/[controller]")]
        [ApiController]
        public class ValuesController : ControllerBase
        {
            private readonly ILogger<ValuesController> _logger;
    
            public ValuesController(ILogger<ValuesController> logger)
            {
                _logger = logger;
            }
    
            // GET api/values
            [HttpGet]
            public ActionResult<IEnumerable<string>> Get()
            {
                _logger.LogInformation("Serilog test info.");
                _logger.LogError("Serilog test error.");
                return new string[] { "value1", "value2" };
            }
        }
    

    随后启动项目即可看到控制台和项目文件中出现配置所对应的控制台日志和日志文件。


    参考文档 :
  • 相关阅读:
    线性表顺序表模板 纯本人手工创造
    娘的,自己的求逆序对模板又不好使了。。。。。。。。
    杜教筛学习总结
    2019 年百度之星·程序设计大赛
    2019中国大学生程序设计竞赛(CCPC)
    2019 年百度之星·程序设计大赛
    2019 Multi-University Training Contest 7
    2019 Multi-University Training Contest 9
    2019牛客暑期多校训练营(第十场)
    2019 Multi-University Training Contest 8
  • 原文地址:https://www.cnblogs.com/MaleDeer/p/10797509.html
Copyright © 2011-2022 走看看