gpt4 book ai didi

c# - 如何记录自定义变量

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:04 24 4
gpt4 key购买 nike

我想记录请求持续时间。为此,我有一个中间件,在 OnActionExecuted 上,我将耗时分配给一个变量,并尝试使用 Custom Layout Rendere through a lambda function 注册它。

requestDuration = _stopWatch.ElapsedMilliseconds;
LayoutRenderer.Register("requestDuration", logEvent => requestDuration);

在我的 nlog.config 上我有以下内容

<column name ="RequestDuration" layout="${requestDuration}" quoting="Nothing"/>

NLog 提示说这将被忽略:

Error Error parsing layout requestDuration will be ignored. Exception: System.ArgumentException: LayoutRenderer cannot be found: 'requestDuration'
at NLog.Config.Factory`2.CreateInstance(String itemName)
at NLog.Layouts.LayoutParser.GetLayoutRenderer(ConfigurationItemFactory configurationItemFactory, String name)

我是否在错误的地方注册了 layoutRenderer?

请注意,我试图有一个列是请求持续时间,而不是简单地将那个时间写在日志消息上

最佳答案

如果在注册布局渲染器时收到“无法找到 LayoutRenderer”,则 NLog 在布局注册之前解析了配置。

你可以做一个reinitialize注册后:

LogManager.Configuration = LogManager.Configuration.Reload();

虽然越早注册越好。

请注意,对于这种情况,似乎并不真正需要自定义布局渲染器。有很多上下文选项,请参阅 https://github.com/NLog/NLog/wiki/Context

关于c# - 如何记录自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57428142/

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