Wie man den aktuellen Benutzernamen anstelle der "AppPool" - Identität in einem logfile mit Log4Net

Sind wir mit Log4Net von unserer ASP.NET MVC3-Anwendung, die alle funktioniert gut, aber wir sehen möchten der aktuelle Benutzername anstatt der Anwendungspool-Identität in den log-Dateien, dies ist der appender Konfiguration benutzen wir:

<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>

So scheint es, die Immobilie: %username ist das abrufen des Werts:

WindowsIdentity.GetCurrent().Name

Statt, was wir brauchen würden: HttpContext.Current.User

Jede Idee, wie wir dieses Problem lösen Sie leicht im web.config ohne das erstellen von benutzerdefinierten Eigenschaften oder zusätzliche log4net abgeleiteten Klassen? Wenn überhaupt möglich ansonsten, wenn die benutzerdefinierte Eigenschaft ist der einzige Weg, damit können wir Leben denke ich 🙂 danke!

InformationsquelleAutor Davide Piras | 2012-07-18
Schreibe einen Kommentar