Bonjour
Je me doute qur la réponse est non, mais j'aimerai être sur : peut on changer le nom du fichier de sortie d'un appender après le PropertyConfigurator.configure(monfichier), via le code ?
Bonjour
Je me doute qur la réponse est non, mais j'aimerai être sur : peut on changer le nom du fichier de sortie d'un appender après le PropertyConfigurator.configure(monfichier), via le code ?
La réponse était oui
Il suffit de mettre le parametre comme ceci dans le fichier .properties
Et dans le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... log4j.appender.DEBUG_FILE.File=${monFichier} ...
Avec le setProperty bien situé avant le configure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 System.setProperty("monFichier","path souhaité"); PropertyConfigurator.configure(fichier_properties);
C'est-à-dire que mon programme doit logger des fichiers... Par exemple des enveloppes SOAP reçues via un web service.
Mais je voudrais laisser la main au log4j.properties pour qu'il définisse lui-même où stocker ces fichiers.
Est-ce possible ?
Pour le coup, je ne comprends pas trop ta difficulté, ça me semble la base, à moins que je n'ai pas compris ?
Si tu veux que le fichier .properties définisse lui même où stocker les fichiers log, sur la ligne "log4j.appender.DEBUG_FILE.File" au lieu d'y mettre un tag qui en fait une valeur à définir plus tard dans le code, i.e. "${variable_définie_dans_le_code}" tu mets "c:/la_ou_tu_veux_tes_logs". Une valeur statique au lieu du tag pour une variable.
Les fichiers de log dont tu parles, ce sont ceux qui contiennent les valeurs des LOG.debug, LOG.error etc...
Or moi je voudrais sauver des fichiers xml, doc, pdf... etc pour pouvoir les consulter après coup.
Mais j'ai besoin que le chemin de sauvegarde (et pas le nom du fichier) soit configurable dans le log4j.properties.
J'ai par exemple pensé à faire un nouvel appender dans le log4j.properties, où la propriété File désignerait un répertoire. Mais après comment faire pour lire cette proprété dans le code java ? (à part un properties.load(log4j.properties) )
Car je dois alors assigner sa valeur en tant que absoluteFilePath au fichier doc ou pdf ou xml que je veux sauvegarder...
Je n'ai personnellement jamais utilisé d'autre sortie que du texte brut. Je ne suis pas sur que tu puisses formater une sortie en XML ou même faire du doc mais ça reste à vérifier. Au pire tu fait ton appender qui fait ce que tu veux.
Lire la propriété, bah employer l'api java properties me semble une méthode simple et efficace. Personnellement je préfère centraliser toutes les propriétés de mon bousin au même endroit, donc je mettais tout dans un XML y compris les détails genre "répertoire des logs", et si j'ai pas bricolé un système pour mettre la config de log4j dedans c'est parce qu'on va pas chercher midi à 14h non plus, je me suis contenté d'y définir le chemin du .properties de log4j.
Je ne vois pas trop quoi te dire de plus, tu as de quoi faire tout ce que tu veux, il te reste juste à t'organiser non ?
Partager