Stiamo utilizzando Log4Net dalla nostra applicazione ASP.NET MVC3, tutto funziona correttamente ma vorremmo vedere il nome utente corrente al posto dell'identità del pool di applicazioni nel registro file, questa è la configurazione appender stiamo usando:Come ottenere il nome utente corrente anziché l'identità AppPool in un file di registro con 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>
Così sembra che la proprietà: %username
sta recuperando il valore di:
WindowsIdentity.GetCurrent().Name
Invece di quello che ci sarebbe bisogno: HttpContext.Current.User
Qualche idea su come possiamo risolverlo facilmente in web.config senza creare proprietà personalizzate o classi derivate da log4net aggiuntive? Se possibile, altrimenti se la proprietà personalizzata è l'unico modo in cui possiamo vivere con quello immagino :) grazie!
È possibile ottenere questo attraverso un modello appender in Log4Net versione 1.2.11. Vedi http://stackoverflow.com/a/26277219/203371 –