Comment pouvons-nous spécifier où log4j doit regarder lors de la recherche de son fichier de configuration xml?
Il semble que par défaut, log4j regarde dans la racine d'un dossier de classe, je peux dire qu'en utilisant la fonctionnalité de débogage log4j et en exécutant mon application à partir de l'IDE.
Cependant, je n'ai plus de dossier de classe dans mon bocal. Et le fichier log4j.xml est à la racine du pot.
J'ai déjà essayé de définir l'option -Dlog4j.configuration = log4j.xml mais cela ne fonctionne pas.
Voici la structure globale de mon application en ce moment:
Il trouve le log4j.xml à l'aide du CLASSPATH. Si log4j ne trouve aucun fichier de configuration, il enverra une erreur à la console. Si vous ne voyez pas une telle erreur, il est probable qu'il trouve un fichier de configuration qui n'est peut-être pas celui que vous modifiez. Il existe une option de ligne de commande pour forcer Log4J à signaler le chemin du fichier de configuration qu'il utilise.
De http://wiki.Apache.org/logging-log4j/Log4jConfigurationHelp
Si vous exécutez avec "-Dlog4j.debug", log4j imprimera des informations sur la sortie standard indiquant comment il essaie de se configurer. La recherche vous indiquera où il recherche le fichier de configuration.
Supposons que votre configuration log4j se trouve en dehors de l'arborescence source. S'il ne trouve pas votre fichier de configuration, aidez-le avec:
-Dlog4j.configuration=file:///your/path/log4j.xml
Notez le qualificatif fichier: ///. Cela ne fonctionnera pas sans.
Je n'ai aucune erreur
Donc log4j trouve votre configuration, sinon vous obtiendriez:
log4j: WARN Aucun appender n'a été trouvé pour logger ().
log4j: AVERTISSEMENT Veuillez initialiser correctement le système log4j.
Également:
Le journal est juste imprimé sur la console
Cela signifie donc que vous devez probablement définir un appender de fichier, comme FileAppender ou RollingFileAppender . La section "Configuration" sur la courte introduction a quelques exemples.
Vous pouvez utiliser:
DOMConfigurator.configure(log4jConfigurationFilename);
et spécifiez l'emplacement s'il est différent de la racine!
C'est peut-être une très vieille question, mais pour moi, la réponse était ici https://logging.Apache.org/log4j/2.x/manual/configuration.html
Selon le lien ci-dessus, recherche de journaux Apache dans classpath pour les fichiers log4j2.xml dans un ordre spécifique comme ci-dessous