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

CORE3.1 WebAPI Serilog日誌框架

CORE3.1 WebAPI Serilog日誌框架

一、安裝NuGet包:

  • Serilog v2.9.0

  • Serilog..AspNetCore v3.2.0

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

  • Serilog.Sinks.File v4.1.0 輸出到檔案

二、修改Program.cs檔案

 1 public static IHostBuilder CreateHostBuilder(string[] args) =>
 2             Host.CreateDefaultBuilder(args)
 3                 .ConfigureWebHostDefaults(webBuilder =>
 4
{ 5 webBuilder.UseStartup<Startup>(); 6 }) 7 .UseSerilog((context, configuration) => 8 { 9 var path = AppDomain.CurrentDomain.BaseDirectory; 10 path = path.Substring(0
, path.LastIndexOf("bin") + 3); 11 configuration 12 .MinimumLevel.Debug() 13 .MinimumLevel.Override("Microsoft", LogEventLevel.Error) 14 .Enrich.FromLogContext() 15 .WriteTo.Console()
16 .WriteTo.File(path: Path.Combine(path, "log.log"), rollingInterval: RollingInterval.Day); 17 });//注入管道

三、在控制器列印日誌

[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格式列印日誌
        }