NLog Web - AspNet-User-Identity without domain



我当前使用nlog.web软件包在应用程序中编写.NET日志。阅读nlog.web后,我注意到与${windows-identity}布局渲染器不同,${aspnet-user-identity}布局渲染器没有域参数。

例如,如果我想记录当前运行的Windows身份,则记录出:domainuser,但是指定domain=false时,它仅记录用户。

如何使用${aspnet-user-identity}实现这种功能?因为当我配置${aspnet-user-identity:domain=false}时,它不起作用。

nlog中使用的WindowsIdentity.Name将始终给出全名,包括域。

登录名是在form domain username中。

https://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.name(v = vs.110(.aspx

我认为您需要一个自定义的布局渲染器,然后在/上拼手分开。

类似的东西:(也许还添加了outofindex的SOM检查(

using NLog.LayoutRenderers;
....
//register ${my-aspnet-user-identity}
LayoutRenderer.Register("my-aspnet-user-identity",
              (logEvent) => HttpContext.Current?.User?.Identity?.Name?.Split('/')[1]);

尽快注册。

我找到了解决此问题的另一种方法@Julian

在nlog.config文件中,我创建了一个变量:

<variable name="aspnetIdentity" value="${replace:searchFor=^\w+\\:replaceWith=:regex=true:inner=${aspnet-user-identity}}" />

如变量所定义的,正则搜索至少一个单词(在开始时(,最后搜索后斜线。其他后斜线是为了逃避特殊角色和双向斜线而写的。最后,发现的内容(这是域名(将被一个空字符串替换,因此我只有用户名而不是域用户名

感谢您的帮助@Julian

最新更新