2009-06-08 16 views
15

ich log4net verwende, und ich war die Protokolldatei in der AppData-Datei für Win speichern XP/Vista usw.C#, wie der appData Dateipfad in der app.config-Datei angeben

Das ist mein app.config Datei so weit, und ich habe den Namen softphone.log angegeben. Hallo, ich bin mir nicht sicher, wie man den vollständigen Pfad zu der Datei angibt, da jeder Benutzer einen anderen Pfad hat, abhängig von seinem Benutzernamen.

<log4net> 
    <logger name="default"> 
     <level value="DEBUG"/> 
    </logger> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="softphone.log"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Size"/> 
     <maxSizeRollBackup value="10"/> 
     <maximumFileSize value="1MB"/> 
     <staticLogFileName value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
     </layout> 
    </appender> 
    </log4net> 

In meinem Quellcode ich den Weg, indem Sie folgende erhalten kann: Allerdings

System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

, kann ich nicht die oben in meinem app.config verwenden und wenn ich schwer, den Weg auf codierten Mein System wäre der Pfad:

C:\Documents and Settings\John\Application Data 

Allerdings würde dies für jeden Client anders sein. Gibt es eine Möglichkeit, dies für die app.config-Datei zu tun?

Vielen Dank für Ihre Anregungen,

+0

mögliche Duplikate von [So geben Sie einen allgemeinen Anwendungsdatenordner für log4net an?] (Http://stackoverflow.com/questions/468989/how-to-specify-common-application-data-folder-for-log4net) –

Antwort

17

ich, dass Sie tun, was Sie wollen nicht glauben können, gibt es ein Verfahren für benutzerdefinierte Parsing Bereiche der app.config-Datei, so dass Sie Ihre eigenen Token hinzufügen könnte, dass Sie könnten mit dem richtigen Wert ersetzen, aber ich sehe nicht, wie das im log4net Abschnitt funktionieren würde.

Allerdings kann alles, was für log4net innerhalb der Config konfiguriert ist, auch in Code gesetzt werden. Ich denke, dass Sie die beste Option wäre, die Eigenschaft für den Appender in Code direkt nach dem Start der Anwendung festzulegen.


Ahh, nie eine schnelle Suche etwas dagegen, meine Unwissenheit offenbart hat. Von here und here scheint es, dass etwas Ähnliches wie folgt aus:

<file value="${APPDATA}\log-file.txt" /> 

tun, was Sie wollen. Ich habe das selbst nicht getestet, also werde ich auch meine erste Antwort hinterlassen - aber ich würde gerne wissen, ob Sie Glück haben.

+1

Froh, dass du redigierst;) Es gibt immer einen Weg, irgendwie zu den Umgebungsvariablen zu kommen. –

+0

Ich werde es versuchen und mit meinen Ergebnissen berichten. Vielen Dank. – ant2009

+0

Nur um zu sagen, dass das okay für mich ist, ich habe es nur unter XP im Moment getestet, aber ich nehme an, es funktioniert auch auf Vista. –

Verwandte Themen