2013-06-12 38 views
3

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

目标定义是这样的:

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

但当customTarget临危ApplicationUser的价值,它没有得到解决,登录人的名字,它只是保持原样${identity:authType=False:isAuthenticated=False}

这一切都为每n日志documentation

我与其他目标测试这一点,它得到解决。我需要做些什么来解决它到用户名?

+0

没人!真!! –

回答

4

您需要与类型Layout定义ApplicationUser那么你就可以获取当前用户使用“绘制布局”使用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 
    } 
} 
+0

救生员!谢谢! :) –

相关问题