fichier journal log4j dans le répertoire utilisateur
Je suis en train de travailler sur une application qui s'exécute sur OSX et windows. Je veux que les journaux soient écrits dans le répertoire de base d'utilisateurs. Pour OSX, il sera dans /Utilisateurs//Bibliothèque/Application Support/MyApp/répertoire des journaux, et sous windows, selon la version dans /Utilisateurs//AppData/MyApp/log.
Quelle est la meilleure façon que je peux faire cela? J'ai regardé autour de solutions pour le présent, mais rien d'utile ou d'une solution, je suis à l'aise à l'aide de l'a venir.
Réjouissons de vos entrées.
edit:
Depuis l'emplacement du fichier journal dépend de l'OS, je suis l'espoir de trouver une solution, peut-être quelque chose comme ci-dessous
if (System.getProperty("os.name").contains("mac"))
logFileLocation = System.getProperty("user.home") + "/Library/Application Support/MyApp/logs"
else
logFileLocation = System.getenv("APPDATA") + "/MyApp/logs"
Grâce
source d'informationauteur Poorav
Vous devez vous connecter pour publier un commentaire.
Changer le
ConsoleAppender
à unFileAppender
. Autant que je sache, la demande d'écriture sera redirigé vers appdata sur windows OS. Pas sûr au sujet de MacOs.et modifier log4j config comme ceci
ou pour l'accueil de l'utilisateur:
Merci à vous tous pour les entrées. fondée sur le soupçon que Alex a proposé, je suis allé avec l'approche suivante,
Dans log4j.propriétés, j'ai eu la configuration suivante
et au début de l'application je l'ai fait.
la getUserAppDirectory() la méthode est définie comme
Probablement le plus propre serait d'écrire votre configuration log4j en supposant un système particulier de propriété (dire
myapp.data.dir
)et de définir cette propriété dans la façon appropriée dans l'écran de lancement pour chaque plate-forme. Par exemple, si vous utilisez un
.app
bundle sur Mac OS X, vous pouvez définir les propriétés du système dansInfo.plist
ou le définir par rapport à la variable d'environnement APPDATA sur Windows (qui serait en mesure de gérer la différence entre XP et 7). Avec un Launch4J
.exe
vous pourriez mettre-Dmyapp.data.dir="%APPDATA%\MyApp"
dans le.l4j.ini
fichier.Vous auriez besoin explicite le code d'initialisation de log4j avant de vous essayer d'accéder à toutes les bûcherons
J'ai Résolu problème de chemin d'accès log4j.xml sous mac :
dans windows configuration de log4j dans web.xml comme :
Où ${LOG4J_HOME} est l'utilisateur varible que nous utilisons pour l'ensemble de la fenêtre. comme
variable utilisateur = LOG4J_HOME
valeur = D:/LOG4J (en d de route, nous avons créé un dossier du nom de Log4J nous avons copié ce chemin et a donné comme valeur)
Dans mac nous avons envirenvirent variable fasility par commande bash, mais il didint fonctionne plus.
donc, pour mac, nous devons créer un dossier n'importe où et nous devons donner statique chemin d'accès de ce dossier.
comme en xml :
Même manière que nous avons à faire dans log4j.xml fichier
Dans la fenêtre que nous utilisons pour faire comme :
Dans mac :
à la place de la valeur que nous avons de copie statique du chemin jusqu'au dossier de LOG4J, ou vous pouvez créer n'importe quel dossier.