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();

 

posted @ 2021-05-21 21:19  zhouslthere  阅读(747)  评论(0编辑  收藏  举报