1. 程式人生 > 實用技巧 >.Core使用Serilog日誌框架

.Core使用Serilog日誌框架

.Core使用Serilog日誌框架

一、首先新增NuGet包:

1、Serilog v2.9.0

2、Serilog.AspNetCore v3.2.0

3、Serilog.Sinks.Console v3.1.1 輸出到控制檯

4、Serilog.Sinks.File v4.1.0 輸出到檔案

二、修改Program.cs檔案

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
                .UseSerilog((context, configuration) =>
                {
                    var path = AppDomain.CurrentDomain.BaseDirectory;
                    path = path.Substring(0, path.LastIndexOf("bin") + 3);
                    configuration
                        .MinimumLevel.Debug()
                        .MinimumLevel.Override("Microsoft", LogEventLevel.Error)
                        .Enrich.FromLogContext()
                        .WriteTo.Console()
                        .WriteTo.File(path: Path.Combine(path, "log.log"), rollingInterval: RollingInterval.Day);          
                });//注入管道

  

三、在控制器列印日誌

[Route("[controller]")]
    [ApiController]
    public class SerilogController : ControllerBase
    {
        private readonly ILogger<SerilogController> _logger;
        public SerilogController(ILogger<SerilogController> logger)
        {
            _logger = logger;
        }
        [HttpGet]
        public void Name()
        {
            _logger.LogError("輸出日誌成功");
            var v = "你好";
            var vv = "世界";
            _logger.LogInformation("{0}{1}", v, vv);//佔位符
            var v1 = "你好";
            var vv1 = 18;
            _logger.LogInformation("{0}{1}", v1, vv1>=18);//新增條件判斷
            var model = new { Name = "你是誰", age = 14 };
            _logger.LogInformation("{@model}",model);//JSON格式列印日誌
        }