Serilog 中时间跨度的自定义格式

问题描述 投票:0回答:1

我正在尝试使用 Serilog 记录一些指标,以监控后台进程的运行情况。一些指标是 TimeSpans,它跟踪运行的总时间、每次迭代的时间等。在我的日志消息中,它们当前的格式为

{Elapsed:g}
{Total:g}
。他们的输出目前对我来说有点过于冗长了。例如,我真的不需要在每次迭代日志消息中显示几天、几小时甚至几分钟,因为每次迭代都需要一秒钟左右的时间。此外,我不需要累积消息中的天数或小时数,因为工作在 30 分钟后中断,让下一次运行从中断的地方开始。

我希望能够通过说

{Elapsed:ss.fff}
之类的内容来自定义我的格式,但是在运行时我会收到一个错误,“System.FormatException:输入字符串的格式不正确”。

当然,我可以在将 TimeSpan 传递给日志记录调用之前对其进行格式化,但那样的话我就会违背结构化日志记录的想法。我想记录纯数据。我只是想让人类可读的消息更紧凑一些。这要求太多了吗?

c# formatting serilog
1个回答
0
投票

对于任何也在寻找这个的人,我使用双反斜杠让它工作。例如:

_logger.LogInformation("{Time:m\\:ss\\.fff}", timespan);
© www.soinside.com 2019 - 2024. All rights reserved.