Log4j: sauver un fichier et définir son chemin de sauvegarde
Bonjour,
j'ai écrit le code suivant:
Code:
1 2 3 4
|
if (LOG.isDebugEnabled()) {
registerMsg(msg);
} |
où msg est un fichier XML sous forme de String.
Je veux donc le stocker dans mes logs pour pouvoir l'analyser par la suite.
Pour ce faire j'utilise la méthode suivante dans registerMsg:
Code:
1 2
|
LOG.debug(generateFile(msg)) |
Et la méthode generateFile(String msg) contient l'algorithme suivant (extrait):
Code:
1 2 3 4 5 6 7 8 9 10 11
|
File dir = new File(targetFilePath);
if (!dir.exists())
dir.mkdirs();
File f = File.createTempFile(targetFileName, ".xml", dir);
FileWriter writer = null;
writer = new FileWriter(f.getPath());
writer.write(message);
writer.close(); |
J'ai un targetFileName relatif "savedMsg\" et les fichiers msg sont stockés dessous en XML.
Comme vous l'avez compris je ne veux qu'il soit sauvé qu'en mode debug, et ça fonctionne parfaitement.
Par contre, je voudrais que l'on puisse définir leur chemin absolu dans le fichier log4j.properties....
Ainsi les fichiers seraient stockés sous le path définis dans le log4j concaténé avec le répertoire savedMsg.
Cependant comment réalise-t-on cela avec log4j ? Je sais que les fichiers de log configuré dans le log4j.properties contiendront les log.debug etc... mais qu'en est-il du fichier qui est généré par la méthode generateFile ? Y a-t-il un moyen de définir son chemin absolu dans le fichier properties ?
Merci pour vos réponses
définir une propriété au niveau du log4j
Une idée serait de définir une propriété dans le log4j.properties et de la lire dans le code java...
je loade le log4j.properties
Le seul moyen que j'ai trouvé:
je crée des propritétés dans mon log4j.properties.
Puis dans Java j'appelle le code suivant:
Code:
1 2
| Properties props = PropsUtils.load("log4j.properties");
targetFilePath = props.getProperty("log.target.filepath"); |
Ce n'est pas exactement ce que je pensais faire au départ, mais je ne vois pas comment créer des propriétés dans le log4j.properties et les lire...
Le problème que ça me pose
c'est que je ne peux pas créer des propriétés dynamiques du style:
Code:
path=${user.dir}/mysubfolder
Mais que je suis obligé de faire
Code:
path=C://mysubfolder
...