Pourquoi choisir XML sur les fichiers de propriétés pour la configuration Log4J?

Existe-t-il des raisons d’utiliser XML sur les fichiers de propriétés pour la configuration Log4J?

Il y a une discussion intéressante sur les mérites des deux dans ce blog . La section ci-dessous est une citation de ce blog:

Les propriétés peuvent être définies par un fichier de propriétés ou par un fichier XML. Log4j recherche un fichier nommé log4j.xml, puis un fichier nommé log4j.properties. Les deux doivent être placés dans le dossier src .

Le fichier de propriétés est moins détaillé qu’un fichier XML. Le fichier XML requirejs également que log4j.dtd soit placé dans le dossier source. Le XML nécessite un dom4j.jar qui pourrait ne pas être inclus dans les anciennes versions de Java.

Le fichier de propriétés ne prend pas en charge certaines options de configuration avancées, telles que les filtres, les parameters ErrorHandlers personnalisés et un type particulier d’appender, à savoir AsyncAppender. ErrorHandlers définit comment les erreurs dans log4j lui-même sont gérées, par exemple les composants mal configurés. Les filtres sont plus intéressants. Parmi les filtres disponibles, je pense que le filtre de plage de niveaux est vraiment manquant pour les fichiers de propriétés.

Ce filtre permet de définir qu’un [n] appender doit recevoir des messages de journal de niveau INFO à WARN. Cela permet de séparer les messages de journal sur différents fichiers journaux. Un pour les messages DEBUGGING, un autre pour les avertissements, …

Le preneur de propriété ne prend en charge qu’un niveau minimum. Si vous le définissez INFO, vous recevrez également des messages WARN, ERROR et FATAL.


Pour répondre aux commentaires sur ma réponse originale: Les italiques sont mes priorités. Pour les besoins du didacticiel, l’auteur a choisi de masquer ou d’omettre involontairement que les propriétés ou xml doivent uniquement figurer dans le chemin de classe plutôt que dans le dossier src. Un moyen simple de les append au classpath consiste à les append au dossier src, ce qui était évidemment suffisant pour les besoins du didacticiel.

Rien de tout cela n’est directement lié à la question posée ou à l’intention de la réponse, qui est de discuter des avantages d’utiliser des fichiers xml pour configurer log4j. Je considère que le rest de la citation est pertinent et utile pour ceux qui cherchent à faire un choix éclairé.

log4j évolue progressivement vers XML, donc les propriétés constituent le format hérité.

Certaines nouvelles fonctionnalités ne peuvent être configurées qu’en XML. J’ai été obligé de passer à XMl car je dois utiliser TimeBasedRollingPolicy.

Cependant, XML est tellement prolixe. J’utilise toujours des propriétés quand je peux.

Eh bien, une chose que vous ne pouvez faire que dans une configuration xml consiste à configurer un enregistreur pour utiliser la mise en mémoire tampon (en utilisant org.apache.log4j.AsyncAppender).

Si vous avez besoin de plus de fonctionnalités, cependant, vous pourriez également vouloir examiner le journal, qui contient plusieurs autres améliorations par rapport à log4j.

Perf4j ( http://perf4j.codehaus.org ) est un très bon système de surveillance des performances, configuré en même temps que log4j et qui fonctionne conjointement avec les fichiers log4j.xml.
Donc, si vous prévoyez d’utiliser perf4j (je vous le recommande), un format xml est requirejs.