将当前用户添加到NLog输出

Sha*_*har 13 c# nlog

我想在NLog输出的每一行添加一个字符串.逻辑保持不变,尝试获取当前用户,如果成功,则将当前用户添加到输出.

我知道每次如何实现它,但我想在一个地方设置这个模板,而不是在每次写作时重复它.

wag*_*ghe 16

WindowsIdentityLayoutRenderer大概应该给你你想要的东西.您可以选择记录域,用户名或两者.

您可以将它(如未经测试)配置为NLog.config文件:

<targets>
    <target name="file" xsi:type="File" 
        layout="${longdate} | ${level} | ${logger} | ${windows-identity} | ${message}"
        fileName="${basedir}/${shortdate}.log" />
</targets>
Run Code Online (Sandbox Code Playgroud)

这可能不适用于低权限环境.

你现在如何获得用户名?如果你得到这样的东西:

HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)

然后你可以使用NLog的"aspnet-user-identity"LayoutRenderer,如下所示:

<targets>
    <target name="file" xsi:type="File" 
        layout="${longdate} | ${level} | ${logger} | ${aspnet-user-identity} | ${message}"
        fileName="${basedir}/${shortdate}.log" />
</targets>
Run Code Online (Sandbox Code Playgroud)

NLog的aspnet*LayoutRenderers在NLog.Extended.sll中,因此除了NLog.dll之外你还需要那个dll.

  • 对于其他人来说,现在是NLog.Web,而不是NLog.Extended (12认同)