2011-08-10 5 views
4

Je veux avoir une configuration log4j telle que le nom du fichier journal doit avoir comme $ {System-name} log.log. c'est-à-dire si l'application est lancée sur n'importe quel système sans changer le fichier ou le code de configuration. il devrait générer le nom du fichier journal comme mentionné. merci.comment modifier le fichier journal log4j dynamiquement?

+0

Voir: http://stackoverflow.com/questions/201188/using-system-environment-variables-in-log4j-xml-configuration –

Répondre

2

je le fais de cette façon:
1) enregistreur init par:

System.setProperty("my.logsDir", vcsLogsDir); 
DOMConfigurator.configure("c:/log4j.xml"); 

2) dans log4j.xml i utilise variables:

<param name="File" value="${my.logsDir}Default.log"/>d 
+0

Pouvez-vous me dire s'il vous plaît, comment il peut définir le chemin relatif du fichier log4j.xml plutôt que le chemin absolu ex: DOMConfigurator.configure ("../ log4j.xml"). Merci. – Channa

+1

Vous pouvez définir le chemin relatif exactement comme vous l'avez écrit ("../log4j.xml"). Il trouvera votre fichier log4j.xml relativement à votre répertoire de travail. –

+0

Merci pour vos commentaires. Je l'ai eu avec ContextClassLoader comme: DOMConfigurator.configure (Thread.currentThread(). GetContextClassLoader.getResource ("."). GetPath() + "log4j.xml") – Channa

2

Vous pouvez utiliser les propriétés du système Java avec le ${property} syntaxe. Il y a nombre de propriétés du système qui sont définies par défaut, y compris

"os.arch"  Operating system architecture 
"os.name"  Operating system name 
"os.version" Operating system version 

Pour une liste complète des propriétés par défaut, voir API de System ou les liste avec System.getProperties().list(System.out).

Si les propriétés par défaut ne le permettent pas, vous devrez ajouter vos propres propriétés en utilisant System.setProperty(property, value).

Questions connexes