我建议编写一个自定义包装器 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 内部,只需将“文本”的内容(即记录器名称)返回到最后一个,但不包括最后一个'.'
.
您还必须在 NLog 配置中添加对程序集的引用。
<extensions>
<add assembly="MyAssembly"/>
</extensions>
我基于您可以在NLog 存储库中找到的 WrapperLayoutRenderers 。
祝你好运!