log4j log-Datei im home-Verzeichnis des Benutzers
Arbeite ich an einer Anwendung, die läuft auf OSX und windows. Ich möchte die logs werden geschrieben, um die Benutzer-home-Verzeichnis. Für OSX wird es unter /Users//Library/Application Support/MyApp/log-Verzeichnis, und unter windows je nach version unter /Users//AppData/MyApp/log Verzeichnis.
Was ist der beste Weg, ich kann dies tun? Ich schaute um Lösungen für diese, aber nichts hilfreiches oder eine Lösung, die ich bin bequem mit der Hilfe gekommen ist.
Freuen uns auf Ihre inputs.
Bearbeiten:
Da der Speicherort der log-Datei hängt von dem Betriebssystem, ich hoffe zu finden, eine Laufzeit-Lösung, möglicherweise so etwas wie unten
if (System.getProperty("os.name").contains("mac"))
logFileLocation = System.getProperty("user.home") + "/Library/Application Support/MyApp/logs"
else
logFileLocation = System.getenv("APPDATA") + "/MyApp/logs"
Dank
InformationsquelleAutor Poorav | 2012-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie die
ConsoleAppender
zu einemFileAppender
. Soweit ich weiß, die schreiben-Anforderung weitergeleitet werden (appdata unter windows OS. Nicht sicher über MacOs.Bearbeiten und log4j config wie diese
oder für den Benutzer-home:
${user.home} Ordner in der Regel offen ist für Schreiboperationen. Es ist der Zweck dieser Ordner zu speichern, Nutzer-spezifische Dateien erstellt nach der Sitzung.
Danke für die Antwort, aber in diese Lösung wird der Pfad der log-Datei werden die gleichen sein, unabhängig von der OS. Bitte siehe mein edit oben zur weiteren Klärung des Problems.
es wird nicht der ofc. {user.home} ist eine system-variable, so dass die Pfade anders sein wird. Sorry, ich kann nicht verstehen, was Sie wollen.
Auf dem mac, die Benutzer.home-zurück /Users/Me auf XP zurück c:\Documents und Einstellungen\Me auf Win 7 zurück c:\Users\Me...that's feine. Aber die log-Datei muss.. OSX --> " /Benutzer/Ich/Library/Application Support/MyApp/Protokolle, für Win 7 c:\Users\Me\AppData\MyApp\logs für XP c:\Docs&Sett\Me\Anwendungsdaten\MyApp\logs. Ich hoffe, dass klärt die Frage mehr.
InformationsquelleAutor Observer
Danke Euch allen für die inputs. basierend auf den Hinweis, dass der Alex vorgeschlagen, ging ich mit dem folgenden Ansatz,
In log4j.Eigenschaften hatte ich folgende Konfiguration
und zu Beginn der Anwendung habe ich dies getan.
den getUserAppDirectory () - Methode ist definiert als
InformationsquelleAutor Poorav
Möglicherweise der sauberste Ansatz wäre, zu schreiben, Ihre log4j Konfiguration vorausgesetzt, eine bestimmte system-Eigenschaft (sagen
myapp.data.dir
)und festgelegt, dass das Eigentum in geeigneter Weise in den launcher für jede Plattform. Zum Beispiel, wenn Sie über einen
.app
bundle unter Mac OS X können Sie system-Eigenschaften in derInfo.plist
oder legen Sie Sie relativ zu der Umgebungsvariable APPDATA unter Windows (die behandeln würden, die den Unterschied zwischen XP und 7). Mit einem Launch4J
.exe
könnte man-Dmyapp.data.dir="%APPDATA%\MyApp"
im.l4j.ini
- Datei.Brauchen Sie explizite code zu initialisieren, log4j, bevor Sie versuchen, Zugriff auf alle Logger
InformationsquelleAutor Ian Roberts
Habe ich Gelöst Pfad Problem log4j.xml mac :
in windows konfigurieren wir log4j in web.xml wie :
Wobei ${LOG4J_HOME} Benutzer-Variable, die wir verwenden, um set-in-Fenster. wie
Benutzer variable = LOG4J_HOME
Wert = D:/LOG4J (in Laufwerk d: haben wir erstellt einen Ordner mit dem Namen Log4J wir kopierten Pfad aus und gab als Wert)
In mac haben wir envirenvirent variable gesetzt fasility von bash-Befehl, aber es didint mehr arbeiten.
also für mac erzeugen wir einen Ordner, wo jeder und wir müssen die statischen Pfad des Ordners.
wie in xml :
Gleichen Art, wie wir zu tun haben log4j.xml Datei
In Fenster wir verwenden, um zu tun, wie :
Mac :
statt der Wert, den wir haben, zu kopieren statischen Pfad bis zum Ordner, LOG4J, oder erstellen Sie einen beliebigen Ordner.
InformationsquelleAutor vardhaman