2010-09-17 13 views
15

Ich habe ein Programm, das log4net verwendet. Es meldet sich direkt im exe-Ordner an.Redirect log4net log im Benutzerverzeichnis

Nun, wenn Windows zu Station weitergereichte> XP (Vista, Seven) Ich beobachtete, dass die Protokolle nicht immer erstellt, aufgrund Ich nehme an die Benutzerrechte und anderen Sicherheits stuff ...

Kann ich umleiten Loggt sich in den Benutzerordner ein? Sprich

\\ Benutzername \ MyProgram \ Logs

Antwort

18

Beispiel config.xml:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="${USERPROFILE}\MyProgramName\Logs\rolling-log-" /> 
    <appendToFile value="true" /> 
    <maxSizeRollBackups value="5" /> 
    <maximumFileSize value="100KB" /> 
    <rollingStyle value="Date" /> 
    <datePattern value="yyyy-MM-dd.'log'" /> 
    <staticLogFileName value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <header value="[Log opening]&#13;&#10;" /> 
     <footer value="[Log closing]&#13;&#10;" /> 
     <conversionPattern value="%date %-5level %logger - %message%newline" /> 
    </layout> 
</appender> 

Bemerkung ${USERPROFILE} Umgebungsvariable.

+0

+1 für ' ' :) – Noctis

4

Ja Sie die Standard-Protokolldatei Speicherort ändern können. In der Konfiguration ändern Sie die file value Einstellung. Im Folgenden legt die Datei im Stammverzeichnis von C:

<appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
<file value="c:\\log-file.txt"/> 

Sie können auch eine Umgebungsvariable verwenden, die folgenden verwendet man TMP genannt:

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file value="${TMP}\log-file.txt" /> 
    <appendToFile value="true" /> 
11

Anstelle von ${USERPROFILE} (siehe answer from moldovanu) können Sie ${LOCALAPPDATA} oder ${APPDATA} verwenden. Dadurch werden Ihre Protokolldateien in den AppData-Ordner des Benutzers geschrieben (lokaler oder Roaming-Unterordner).