如何获取当前用户名,而不是应用程序池的身份在日志文件中与log4net的(How to get cu

2019-07-30 11:22发布

我们正在使用log4net的,从我们的ASP.NET MVC3应用程序,一切工作正常,但我们希望看到当前用户名,而不是在日志文件中的应用程序池的身份,这是我们所使用的附加器配置:

<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的派生类的任何想法? 如果有可能的话,否则,如果自定义属性是我们可以忍受的唯一途径我想:)谢谢!

Answer 1:

更换%username%identity应该这样做。 它在我的当前项目为我工作。

您可以了解更多关于log4net的与优秀教程



文章来源: How to get current username instead of AppPool identity in a logfile with Log4Net