Serilog使用总结
webapps中的应用:
我一般用于替代Microsof.AspNetCore中的自带日志,在进行HTTP Request的时候,自带的日志系统信息特别多余不简约,但其实Serilog中更强大的功能是他的 Structured logging,在记录的时候可以很方便的将复杂的数据利用 .NET 中的预置对象进行记录。在获取日志信息时透过logging API 可以轻松的记录应用程式中对象属性,方便快速进行logging 内容进行查询与分析,并将其纪录内容透过 json (可指定) 的方式输出。达到简约美观的设置:
首先是Log的创建:
Log.Logger = new LoggerConfiguration() .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) .MinimumLevel.Information() .WriteTo.Console() .WriteTo.File("logs\\BlogLog.txt", rollingInterval: RollingInterval.Day,restrictedToMinimumLevel:LogEventLevel.Warning) .CreateLogger();
重写覆盖掉自带的日志设置,简单点的方法可以将 appsettings.json 中的日志记录部分删除,并在Host创建时使用Serilog覆盖默认的ILoggerFactor配置。
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog() .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(typeof(StartUpDevelopment).GetTypeInfo().Assembly.FullName ?? string.Empty); });
最后在中间件注册部分加入该组件即可:
//使用Serilog代替MsAspNetCoreRequestLogging //在MVC等框架中间件之前 使用静态文件之后来简化日志输出 app.UseSerilogRequestLogging();