我们在 ASP.NET MVC3 应用程序中使用 Log4Net,一切正常,但我们希望在日志文件中看到当前用户名而不是应用程序池的标识,这是我们正在使用的附加程序配置:
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<threshold value="ALL" />
<immediateFlush>true</immediateFlush>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<encoding value="utf-8" />
<file value="C:\Logs\MyLogs.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<maxSizeRollBackups value="30" />
<maximumFileSize value="25MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%property{log4net:HostName}] - %username%newline%utcdate - %-5level - %message%newline" />
</layout>
</appender>
<root>
<priority value="ALL" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
所以看起来像这个属性:%username
正在检索以下值:
WindowsIdentity.GetCurrent().Name
而不是我们需要的:HttpContext.Current.User
知道如何在 web.config 中轻松解决此问题,而无需创建自定义属性或其他 log4net 派生类吗?如果可能的话,否则如果自定义属性是我们可以忍受的唯一方式,我想:)谢谢!
更换%username
by %identity
应该这样做。它在我当前的项目中为我工作。
您可以通过以下方式了解有关 log4net 的更多信息this http://www.codeproject.com/Articles/140911/log4net-Tutorial优秀的教程
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)