Serilog:如何排除几个来源
问题描述:
我想有几个日志文件,我试图找到一种方法来排除几个来源。这是我的代码:Serilog:如何排除几个来源
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和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"))
)
非常感谢你。 – user348173