.Core使用Serilog日誌框架
阿新 • • 發佈:2020-09-08
.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格式列印日誌 }