2

我已经创建了一个自定义 nLog 目标,它除了一件事外正在工作。我想将登录的人名传递给目标,我创建了一个名为的属性ApplicationUser,它将获取值。

目标定义如下所示:

<target name="MemoryTrace" 
        xsi:type="CustomTraceListener" 
        ApplicationUser="${identity:authType=False:isAuthenticated=False}"  />

但是当 customTarget 收到 ApplicationUser 的值时,它不会解析为登录的人名,它只是保持为${identity:authType=False:isAuthenticated=False}.

这都是根据 nLog文档

我已经用其他目标对此进行了测试,它得到了解决。我必须做什么才能将其解析为 username ?

4

1 回答 1

4

您需要ApplicationUser使用类型定义您的,Layout然后您可以使用“渲染布局”获取当前用户ApplicationUser.Render(logevent)

[Target("CustomTraceListener")]
public sealed class MyFirstTarget : TargetWithLayout
{

    public Layout ApplicationUser { get; set; }

    protected override void Write(LogEventInfo logEvent)
    {
        string logMessage = this.Layout.Render(logEvent);
        string applicationUser = ApplicationUser.Render(logEvent);
        // ... Write where you want
    }
} 
于 2013-06-16T18:20:11.687 回答