Log4net-Ausgabe an Eigene Dateien

8

In unserer C # -App schreiben wir Dateien in Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) . Unsere log4net Logfile sollte auch dort gehen, also haben wir application.conf wie folgt definiert:

%Vor%

Das funktioniert, bis wir auf einem PC mit einem nicht-englischen Windows laufen. Dann zeigt SpecialFolder.MyDocuments auf den Ordner Mijn Documenten , während das Protokoll weiterhin auf My Documents verweist. Verwirrung entsteht, denn jetzt sind unsere Dateien an zwei Stellen.

Ich möchte mein Protokoll in den "echten" Ordner "Eigene Dateien" schreiben. Wie mache ich das?

  • Ich habe versucht, eine Umgebungsvariable wie %USERPROFILE% zu finden, aber für My Documents scheint es keine zu geben.
  • Es gibt einen Registrierungsschlüssel, der den wahren Speicherort von "Meine Dokumente" definiert, aber von application.conf nicht erreichbar ist.
  • Ich habe versucht, den Parameter File meines Appenders programmgesteuert wie folgt zu überschreiben:

    %Vor%

    Das funktioniert auch nicht: Wenn ich die Interna meines Loggers überprüfe, meldet die Eigenschaft File glücklich Mijn Documenten , aber in der Zwischenzeit gehen die Logs immer noch zu My Documents .

Mir gehen die Ideen aus!

    
jqno 21.08.2013, 18:07
quelle

3 Antworten

9

Ändern Sie die Zeile

%Vor%

bis

%Vor%     
sgmoore 21.08.2013, 18:49
quelle
1

Es scheint mindestens zwei Ansätze zu geben. Das einfachste ist eine Art Hack:

  1. Geben Sie eine benutzerdefinierte Umgebungsvariable an, um den Stammpfad in Ihrer log4net-Konfiguration anzugeben:

    <file value="%MYAPP_USER_ROOTFOLDER%\MyApp\log.txt"/>

  2. Legen Sie beim Start vor dem Initialisieren der Protokollierung diesen Umgebungsvariablenwert fest:

    Environment.SetEnvironmentVariable("MYAPP_USER_ROOTFOLDER", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));

Der kompliziertere aber empfohlene Ansatz wird hier erklärt: Ссылка und hier < a href="http://ziqbalbh.com/articles/log4net-another-way-to-change-log-file-location-on-runtime/"> Ссылка

    
Alex 21.08.2013 18:48
quelle
1

Die angenommene Antwort ist veraltet.

Sie sollten jetzt verwenden:

%Vor%

(Dies sollte sogar unter Windows 7 funktionieren, wo "Dokumente" mit dem Alias ​​"Eigene Dateien" bezeichnet wird.)

${UserProfile} wird C: \ Benutzer [Benutzername] zugeordnet, auch wenn diese Variable nicht explizit in Ihrer Umgebungsvariablenliste definiert ist.

    
mcfroob 23.01.2018 00:37
quelle

Tags und Links