如何在Serilog输出模板中创建可选属性?

时间:2015-06-24 20:14:54

标签: c# .net logging serilog

我正在尝试为遵循以下格式的serilog消息创建全局输出模板:

{Timestamp:yyyy-MM-dd HH:mm:ss,fff} [{ComponentName}, {ApplicationName}, {ThreadId}] {Level} ({ErrorId}): {Message} {Exception}

我遇到的麻烦是,有些消息不包含错误ID,异常或ThreadIds。因此,当出现这种情况时,我收到一条消息,其中包含一堆字符,这些字符会在日志消息中添加噪音,例如,

2015-06-24 15:11:03,234 [Component, MyApp, ] Info (): This is a message that I'm writing

是否可以在消息模板中使用Serilog支持可选参数?

1 个答案:

答案 0 :(得分:0)

我在我的应用程序中使用了Serilog,就像你注意到“丢失”字段会在你观察时“消失”,但这些占位符周围的字符格式却没有。

我建议更改消息模板的格式,以便可选的字段显示在后续行中(可以忽略)或格式化为您不会注意到它们的缺失。

您还可以编写一个包含您的应用程序调用的Serilog日志记录方法(logger.Debug,logger.Warning,logger.Information等)的包装器,它包含逻辑(或重载方法)以了解哪些值是现在和哪些缺席。包装器代码将提供具有正确组合的适当消息模板,以避免消息中的额外字符。