Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Serilog:如何排除多个源_C#_Logging_Asp.net Core_Asp.net Core 2.0_Serilog - Fatal编程技术网

C# Serilog:如何排除多个源

C# Serilog:如何排除多个源,c#,logging,asp.net-core,asp.net-core-2.0,serilog,C#,Logging,Asp.net Core,Asp.net Core 2.0,Serilog,我想有几个日志文件,我正试图找到一种方法来排除几个来源。这是我的代码: Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(configuration) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Logger(l => l.Filter.ByIncludingOnly(Matching.FromSource("Hangfi

我想有几个日志文件,我正试图找到一种方法来排除几个来源。这是我的代码:

Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(configuration)
    .Enrich.FromLogContext()
    .WriteTo.Console()
    .WriteTo.Logger(l => l.Filter.ByIncludingOnly(Matching.FromSource("Hangfire"))
        .WriteTo.Async(a => a.RollingFile("Logs/hangfire-{Date}.txt"))
    )
    .WriteTo.Logger(l => l.Filter.ByExcluding(Matching.FromSource("Hangfire"))
        .WriteTo.Async(a => a.RollingFile("Logs/main-{Date}.txt"))
    )
    .CreateLogger();
正如你们所看到的,我有子记录器:第一个只收集hangfire日志,第二个收集除hangfire之外的所有日志。但是,我想添加另一个排除过滤器,例如,我想排除hangfire和
IMyClass
日志。我怎么做

Matching.FromSource()
将函数从
LogEvent
返回到
bool
。您可以利用这一点创建两个过滤器函数:

var hangfire = Matching.FromSource("Hangfire");
var myClass = Matching.FromSource("MyClass");
然后将它们称为内联:

.WriteTo.Logger(l => l.Filter.ByExcluding(le => myClass(le) || hangfire(le))
    .WriteTo.Async(a => a.RollingFile("Logs/main-{Date}.txt"))
)