Ответ 1
Замена %username
на %identity
должна сделать это. Он работает для меня в моем текущем проекте.
Вы можете узнать больше о 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? Если возможно вообще, если обычное свойство - единственный способ, которым мы можем жить, я думаю:) спасибо!
Замена %username
на %identity
должна сделать это. Он работает для меня в моем текущем проекте.
Вы можете узнать больше о log4net с этим отличным учебником