Ali*_*liK 6 c# serilog .net-core
我的 .net core 应用程序基本配置上有 Serilog,如下所示:-
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
.Enrich.FromLogContext()
.WriteTo.File(@"./logs/log-.log", rollingInterval: RollingInterval.Day, outputTemplate: LOG_TEMPLATE)
.WriteTo.Console(outputTemplate: LOG_TEMPLATE, theme: AnsiConsoleTheme.Literate)
.WriteTo.SomeOtherLog()
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
现在假设我希望根据条件写入 SomeOtherLog。人们会怎样做呢?
就像是
if(conditon)
.WriteTo.SomeOtherLog()
Run Code Online (Sandbox Code Playgroud)
Cai*_*ete 11
从Serilog 2.9.0开始,您现在可以使用.WriteTo.Conditional并指定定义是否写入接收器的条件。
Log.Information("Hello");
Log.CloseAndFlush();
var configuration = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
.Enrich.FromLogContext()
.WriteTo.File(@"./logs/log-.log", rollingInterval: RollingInterval.Day,
outputTemplate: LOG_TEMPLATE)
.WriteTo.Console(outputTemplate: LOG_TEMPLATE, theme: AnsiConsoleTheme.Literate)
.WriteTo.Conditional(evt => condition, wt => wt.SomeOtherLog());
Log.Logger = configuration.CreateLogger();
// ...
Run Code Online (Sandbox Code Playgroud)
var configuration = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
.Enrich.FromLogContext()
.WriteTo.File(@"./logs/log-.log", rollingInterval: RollingInterval.Day,
outputTemplate: LOG_TEMPLATE)
.WriteTo.Console(outputTemplate: LOG_TEMPLATE, theme: AnsiConsoleTheme.Literate);
if (condition)
{
configuration.WriteTo.SomeOtherLog();
}
Log.Logger = configuration.CreateLogger();
Run Code Online (Sandbox Code Playgroud)