Il semble que log4j a un certain problèmes de chargement de classe (entre autres) et il me semble que la tendance est de sortir de log4j vers slf4j. (Mise en veille prolongée a cessé d'utiliser la première en faveur de ce dernier)
Mise à jour:
Vous semblez avoir trébuché sur le problème majeur avec log4j (et la bibliothèque de journalisation Apache Commons), à savoir qu'ils ont un temps ridiculement difficile de découvrir et d'interagir avec les bons classloaders car ils sont utilisés. Il y a une explication très dense, avec des exemples, ici; le message à retenir est que l'une des principales forces motrices de la nouvelle SLF4J-cadre de l'exploitation forestière était d'éliminer complètement ces problèmes. Vous pouvez échanger et voir si votre vie est faite plus facile.
SLF4J est en effet juste une façade forestière. Cependant, Log4J est destiné à être réussi par Logback , des mêmes auteurs.
Mise à jour : Si vous souhaitez connaître un autre avantage de SLF4J, c'est le fait que les constructions (laides) ne sont plus nécessaires pour éviter le toString()
Était inutilement appelé:
if (logger.isDebugEnabled()) {
logger.debug("Message: " + bigObject + ", " + anotherBigObject);
}
Vous pouvez plutôt utiliser des messages paramétrés:
logger.debug("Message: {}, {}", bigObject, anotherBigObject);
Voir aussi Quel est le moyen le plus rapide de (pas) la journalisation?
Premièrement: un point important: SLF4J est la journalisation frontale (l'API), qui peut utiliser ci-dessous la plupart des systèmes de connexion principaux: log4j ou java.util.logging par exemple. Il est donc préférable de comporter SFL4J à journalisation des communes .
À propos de l'état de Log4J, citations de l'état de Java journalisation (il y a un an)
Une chose que je n'avais pas réalisée est que le développement log4j est essentiellement mort. Il est actuellement à la version 1.2 et les plans pour la version 1.3 ont été abandonnés en faveur du développement log4j 2.0. Cependant, il n'apparaît pas que 2.0 est en développement actif. Il convient de noter que CEKI GÜLCÜ, le fondateur original du projet Log4J, est passé à SLF4J (voir ci-dessous).
En regardant la slf4j Page Il ne semble pas que ce serait Remplacer log4j - il vous permettrait simplement d'utiliser le même Cadre de journalisation sous-jacent (p. Ex. Log4J) pour votre application entière, permettant aux bibliothèques de les accrocher automatiquement.
Cela ressemble plus à un remplacement pour Apache Commons Logging que log4j.
SLF4J a, à mon avis, l'énorme avantage que vous pouvez unifier la journalisation de toutes les bibliothèques que vous utilisez à travers les ponts qu'il fournit. Aucun des autres cadres d'exploitation forestière ne le permet. Cela permet aux projets de se déplacer en douceur vers SLF4J et d'ignorer les choix du cadre de journalisation que les dépendances ont apportée.
SLF4J n'est pas une vraie façade connectée. SLF4J ne prend pas en charge de nombreuses fonctionnalités de ses implémentations. Pour le court, je mentionne des exemples de log4j ci-dessous.