NLog 避免重复行并设置增量时间

NLog avoid repeated lines and set delta time

我正在使用 Nlog,但找不到以下功能。 当然,我可以自己制作它们,但由于 NLog 通常会处理所有需求,因此可能会内置所有这些。


每个条目之间的增量秒数

我的布局如下 “[${date:format=dd.MM.yyyy HH\:mm\:ss.fff}] (${level:uppercase=true}): ${message}” 这样我就会得到类似的东西:

[20.05.2021 11:53:33.667] (INFO): --- 20210520_1153 Starting ---
[20.05.2021 11:53:33.784] (INFO): *.cfg not found going for TRIAL LICENCE
[20.05.2021 11:53:33.784] (INFO): Reg Hive found. Verifying
[20.05.2021 11:53:33.784] (INFO): Key length = 3

是否可以自动添加增量时间?所以像下面这样

[20.05.2021 11:53:33.667 - 0.000] (INFO): --- 20210520_1153 Starting ---
[20.05.2021 11:53:33.784 - 0.117] (INFO): *.cfg not found going for TRIAL LICENCE
[20.05.2021 11:53:33.784 - 0.000] (INFO): Reg Hive found. Verifying
[20.05.2021 11:53:33.784 - 0.000] (INFO): Key length = 3

避免重复行(随意)

[20.05.2021 11:53:33.667] (INFO): AAA
[20.05.2021 11:53:33.784] (INFO): AAA
[20.05.2021 11:53:33.784] (INFO): AAA
[20.05.2021 11:53:33.784] (INFO): AAA

变成

[20.05.2021 11:53:33.667] (INFO): AAA
...

并且能够将其扩展到不止一个级别

[20.05.2021 11:53:33.667] (INFO): AAA
[20.05.2021 11:53:33.784] (INFO): BBB
[20.05.2021 11:53:33.784] (INFO): AAA
[20.05.2021 11:53:33.784] (INFO): BBB

成为

[20.05.2021 11:53:33.667] (INFO): AAA
[20.05.2021 11:53:33.784] (INFO): BBB
...

那会节省很多字符

提前致谢

帕特里克

这些功能(尤其是第二个)需要对现有日志文件的内容进行连续解析,这将显着影响性能。
我怀疑 NLog 是否会包含重新解析功能,即使有,我也怀疑使用它是否是个好主意。

在这两种情况下,预处理日志消息的写入比追溯必须重新解析日志并确定当前日志消息是否应该写入要容易得多。

您可以使用 ${processtime} 查看自程序启动以来的时间。另请参阅:https://github.com/NLog/NLog/wiki/Processtime-Layout-Renderer(对于查看增量很有用)。

您可以使用 WhenRepeated-过滤器来阻止重复的日志事件。但最好尽可能避免重复记录日志(并确保已正确配置日志记录规则)。另见:https://github.com/NLog/NLog/wiki/WhenRepeated-Filter