gpt4 book ai didi

nlog - nlog 中的时差

转载 作者:行者123 更新时间:2023-12-04 18:21:05 27 4
gpt4 key购买 nike

我想更改 nlog 布局,以便显示两个条目之间的时间。这样的布局可能吗?

这是我现在的输出,如果在时间旁边有自之前进入以来经过的秒数,那就太好了。

    2012-05-20 19:18:41.0924|INFO|HashMatcher.LocalMatcherControl|99 archives discovered
2012-05-20 19:18:56.5267|INFO|HashMatcher.LocalMatcherControl|memory usage BEFORE loading samples 283.06 Mb
2012-05-20 19:18:56.5267|INFO|HashMatcher.LocalMatcherControl|performing sample scan
2012-05-20 19:19:08.9131|INFO|HashMatcher.LocalMatcherControl|memory usage BEFORE creating progress 285.43 Mb
2012-05-20 19:20:16.5804|INFO|HashMatcher.LocalMatcherControl|skipped progress 0
2012-05-20 19:20:17.6100|INFO|HashMatcher.LocalMatcherControl|memory usage BEFORE sorting progress 205.06 Mb

最佳答案

我认为 NLog 中没有内置任何东西可以“免费”提供此功能,但是您应该能够使用自定义 LayoutRenderer 自己轻松实现它。 .您可以找到许多示例 here (在 NLog 的源代码库中)。

你最终可能会得到这样的东西(我既没有编译也没有测试过):

[LayoutRenderer("ElapsedTime")]
[ThreadAgnostic]
public class ElapsedTimeLayoutRenderer : LayoutRenderer
{
DateTime? lastTimeStamp;

public ElapsedTimeLayoutRenderer()
{
}


protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
var stamp = logEvent.TimeStamp;

var span = stamp - lastTimeStamp.HasValue ? lastTimeStamp : stamp;

builder.Append(stamp.ToString());

lastTimeStamp = stamp;
}
}

实质上,布局渲染器会记住记录的最后一条消息的时间戳。此布局渲染器的值是记录的最后一条消息与当前消息的时间戳之间的差异。这个布局渲染器可能会使用一些增强功能。如果您查看 DateTime,您会发现它还具有 CultureInfo 和 Format 的属性。根据您的需要,您甚至可能希望提供选项以提供自应用程序启动以来耗时(或至少自记录第一条消息以来)。

此外,由于正在修改成员变量 (lastTimeStamp),因此可能应该使用 lock 语句对其进行保护。

希望这将帮助您获得所需的功能。

祝你好运!

关于nlog - nlog 中的时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675991/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com