.net core 有条件地分别禁用Serilog接收器

.net core 有条件地分别禁用Serilog接收器,.net-core,serilog,.net Core,Serilog,我在.net核心应用程序基本配置上的serilog如下所示:- Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(Configuration) .Enrich.FromLogContext() .WriteTo.File(@"./logs/log-.log", rollingInterval: RollingInterval.Day, outputTemplate: LOG

我在.net核心应用程序基本配置上的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();
现在让我们假设我希望根据条件写入其他日志。那怎么办呢

差不多

if(conditon)
.WriteTo.SomeOtherLog()
var配置=新日志配置()
.ReadFrom.Configuration(配置)
.Enrich.FromLogContext()的
.WriteTo.File(@“/logs/log-.log”,rollingInterval:rollingInterval.Day,
输出模板:日志(模板)
.WriteTo.Console(输出模板:LOG_模板,主题:AnsiConsoleTheme.Literate);
如果(条件)
{
configuration.WriteTo.SomeOtherLog();
}
Log.Logger=configuration.CreateLogger();
从开始,您现在可以使用
.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();
// ...

谢谢,我真不敢相信我错过了。请检查以下答案: