Log4j Propriétés dans un lieu personnalisé
Je suis en utilisant Apache Commons Logging et SLF4J avec log4j, mais je veux aussi utiliser le log4j.propriétés personnalisé dans un endroit comme conf/log4.les propriétés. Voici le problème:
Si j'utilise
PropertyConfigurator.configure("conf/log4j.properties");
puis mon application est liée à log4j et de défaites le but d'avoir ACL et SLF4J.
Quelle est la meilleure façon de le configurer sans l'app jamais savoir ce que l'enregistrement de la mise en œuvre est?
source d'informationauteur Azder
Vous devez vous connecter pour publier un commentaire.
Je pense que la meilleure chose à faire est de spécifier l'emplacement du fichier à l'aide de la log4j.configuration système de la propriété. L'adoption de l'exemple dans la Log4J manuel:
Je crois que Log4J trouverez un fichier nommé "log4j."propriétés de n'importe où sur le chemin de la classe, mais peut-être en train d'halluciner. La peine d'essayer, cependant.
Comme vous le dites, en invoquant
PropertiesConfigurator
vous liant à votre application de log4j. Toutefois, l'étendue de cette cravate est assez limité. Vous pourriez très facilement supprimer la ligne en invoquantPropertiesConfigurator
et recompilez votre code. Après que ce soit fait, en supposant que vous utilisez le SLF4J API pour l'enregistrement, vous pourriez repalce log4j avec une autre structure de journalisation, dire logback-classique ou j.u.l'. juste en remplaçant les fichiers jar. Ainsi, SLF4J sert encore de son but, dans une large mesure. Je ne voudrais pas jeter le bébé avec l'eau du bain.Vous pouvez spécifier le fichier de configuration de l'emplacement avec VM argument
-Dlog4j.configuration="file:/C:/workspace3/local/log4j.properties"