Подтвердить что ты не робот

Как получить текущее имя пользователя вместо идентификатора AppPool в файле журнала с помощью Log4Net

Мы используем Log4Net из нашего приложения ASP.NET MVC3, все работает отлично, но мы хотели бы видеть текущее имя пользователя вместо идентификатора пула приложений в файлах журнала, это конфигурация appender, которую мы используем:

<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? Если возможно вообще, если обычное свойство - единственный способ, которым мы можем жить, я думаю:) спасибо!

4b9b3361

Ответ 1

Замена %username на %identity должна сделать это. Он работает для меня в моем текущем проекте.

Вы можете узнать больше о log4net с этим отличным учебником