我正在尝试使用 Serilog 记录一些指标,以监控后台进程的运行情况。一些指标是 TimeSpans,它跟踪运行的总时间、每次迭代的时间等。在我的日志消息中,它们当前的格式为
{Elapsed:g}
和 {Total:g}
。他们的输出目前对我来说有点过于冗长了。例如,我真的不需要在每次迭代日志消息中显示几天、几小时甚至几分钟,因为每次迭代都需要一秒钟左右的时间。此外,我不需要累积消息中的天数或小时数,因为工作在 30 分钟后中断,让下一次运行从中断的地方开始。
我希望能够通过说
{Elapsed:ss.fff}
之类的内容来自定义我的格式,但是在运行时我会收到一个错误,“System.FormatException:输入字符串的格式不正确”。
当然,我可以在将 TimeSpan 传递给日志记录调用之前对其进行格式化,但那样的话我就会违背结构化日志记录的想法。我想记录纯数据。我只是想让人类可读的消息更紧凑一些。这要求太多了吗?
对于任何也在寻找这个的人,我使用双反斜杠让它工作。例如:
_logger.LogInformation("{Time:m\\:ss\\.fff}", timespan);