我需要通过仅包含特定上下文数据的子记录器发送数据。在这种情况下,我非常希望忽略消息模板中的所有内容(文本本身除外)并传递已由enrichers和PushContext语句添加的关键上下文数据。这主要是为了创建一个保持一致的仪表板视图。
LevelSwitch = new LoggingLevelSwitch { MinimumLevel = LogLevelSerilog.Verbose };
Log.Logger = new LoggerConfiguration()
.MinimumLevel.ControlledBy(LevelSwitch)
.Enrich.With<CorrelationIdEnricher>()
.Enrich.With<ThreadIdEnricher>()
.Enrich.FromLogContext()
.WriteTo.Seq("http://localhost/Response")
// Filter to a sublogger for instrumentation...
.WriteTo.Logger(lc => lc.MinimumLevel.Information()
.WriteTo.Seq("http://localhost/Public")
.Filter.ByIncludingOnly(q => q.Properties.ContainsKey("Controller")
|| q.Properties.ContainsKey("Action")
|| q.Properties.ContainsKey("Class")
|| q.Properties.ContainsKey("Method")
|| q.Properties.ContainsKey("Organization")
|| q.Properties.ContainsKey("OrganizationId")
|| q.Properties.ContainsKey("CorrelationId")))
.CreateLogger();
为什么这不是向子记录器发送任何事件的任何想法? (想出来)
为什么我从主记录器中获取所有内容(每个级别允许)?我希望过滤器减少进入子记录器的数据量。即:我只想将过滤后的数据转到子记录器。任何添加的数据都应该从日志中删除。
答案 0 :(得分:1)
外部记录器需要至少启用Information
级别才能使其正常工作 - 如果LevelSwitch
设置为Warning
或Error
,则可以解释没有事件到达子记录器。