gpt4 book ai didi

logging - 使用 NLog 有没有办法在尾随点之前记录记录器的名称?

转载 作者:行者123 更新时间:2023-12-01 12:53:11 25 4
gpt4 key购买 nike

我有一个场景,如果我可以记录记录器的名称,我可以减少配置文件中的目标数量 之前 尾随点字符。

使用 ${logger:shortName=true}可以呈现记录器的短名称,即根据定义 the part after the trailing dot character .但是我想记录的是点字符之前的部分。

例如,我可能使用 MyNamespace.MyClass 的记录器名称, 使用 ${logger:shortName=true}我会得到一个值 MyClass但我看不到只有 MyNamespace 的值的方法使用 ${logger:shortName=false}返回 MyNamespace.MyClass 的全名.

所以我想知道这是否可能?

最佳答案

我建议编写一个自定义包装器 LayoutRenderer,如下所示:

using NLog.Config;
using NLog.LayoutRenderers;

namespace NLog.LayoutRenderers.Wrappers
{
[LayoutRenderer("loggerprefix")]
[ThreadAgnostic]
public sealed class LoggerPrefixRendererWrapper : WrapperLayoutRendererBase
{
protected override string Transform(string text)
{
return text.Substring(0,text.LastIndexOf('.'));
}
}
}

这个想法是你将这个包装器应用到 logger LayoutRenderer 像这样:
${loggerprefix:${logger}}

Transform 方法应该接收记录器的全名(在您使用类名作为记录器名称的情况下,完全限定的类名)。在 Transform 内部,简单地返回“text”的内容(即记录器名称),但不包括最后一个 '.' .

您还必须在 NLog 配置中添加对程序集的引用。
  <extensions>
<add assembly="MyAssembly"/>
</extensions>

我基于您可以在 NLog repository 中找到的 WrapperLayoutRenderers .

祝你好运!

关于logging - 使用 NLog 有没有办法在尾随点之前记录记录器的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10978575/

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