Différence entre Slf4j et Log4j

Si vous êtes développeur, vous avez souvent rédigé une déclaration de journalisation au cours de votre carrière. Dans cet article, nous avons couvert deux des mécanismes de journalisation les plus couramment utilisés - Log4j et Slf4j. Avant de commencer, il serait bon de comprendre quelques notions de base couvrant la partie QUOI et POURQUOI de la journalisation. Dans cette rubrique, nous allons en savoir plus sur Slf4j vs Log4j.

SLF4J: Il s'agit d'un terme abrégé de façade de journalisation simple pour Java qui permet aux utilisateurs de brancher le système de journalisation souhaité pendant le déploiement des applications logicielles. Veuillez également noter que nous avons utilisé le terme modèle de façade qui n'est rien d'autre qu'un modèle de conception de logiciel commun à utiliser dans la POO.

Log4J: C'est un cadre de journalisation (c'est-à-dire une application semi-build en soi) qui est fiable, flexible et rapide. Les enregistrements peuvent être classés en différents niveaux tels que trace, débogage, info, erreur, fatal et plusieurs autres modes. Ces détails de journalisation peuvent être partagés sur différentes plates-formes, comme d'autres bases de données et consoles de fichiers.

QUOI - LES FICHIERS DE JOURNAL peuvent être considérés comme un historique de suivi de toutes les activités avec leurs résultats. Ils contiennent également tous les types de détails d'interaction qu'un utilisateur avait avec le système, que ce soit des détails de transaction, des informations ou également en cas de problème (je veux dire si l'activité particulière n'effectue pas l'exécution).

POURQUOI - nous devons suivre les problèmes, les déclarations concernant le chargement des fonctions, le type de paramètres que nous avons passés, les messages d'avertissement ou les notifications pour mieux comprendre l'application dans la phase de développement et peuvent également être utilisés pour référence future.

Comparaison directe entre Slf4j et Log4j (infographie)

Voici les 5 principales différences entre Slf4j et Log4j

Différences clés entre Slf4j et Log4j

Laissez-nous discuter de certaines des principales différences entre Slf4j vs Log4j:

1. Ssl4j est juste une abstraction ou il fournit une couche d'abstraction et nous ne l'utilisons pas alors que Log4j est un cadre de journalisation qui a différentes implémentations.

2. Parler des composants au sein de ces deux Sl4j n'a aucun composant en tant que tel, il a une liste d'implémentations comme logback ou NOPloggers et plusieurs autres alors que dans le cas de log4j, il a 3 composants principaux à savoir -

  • Loggers: ceux-ci capturent les informations de journalisation pendant l'exécution
  • Appenders: ils agissent comme des sorties lors de la publication des informations de journalisation vers différentes destinations.
  • Mises en page: elles fournissent une option de mise en forme dans différents styles.

3. En parlant de préférences, nous aimerions dire qu'il n'y a pas de comparaison directe entre ssl4j et log4j mais il peut y avoir des préférences basées sur des situations particulières et quand utiliser l'une ou l'autre, suit ci-dessous la liste -

  • Ssl4j est facile à utiliser comme API et simple et direct
  • Ssl4j prend en charge tous les cadres de journalisation cruciaux
  • La distribution Ssl4j est livrée avec des liaisons pour différents enregistreurs comme les enregistreurs simples, NOPlogger, Log4jloggeradapter, JDK14loggeradapter et JCLLoggerAdapter.
  • Ssl4j gère les dépendances Maven
  • Il est largement utilisé car il est parfaitement documenté avec tous les si et mais la considération
  • Ssl4j prend en charge le mappage de contexte de diagnostic tout en stockant les informations de contexte
  • Log4j est considéré comme sûr pour les pratiques de journalisation
  • Il est hautement optimisé pour les performances
  • Log4j prend en charge plus d'un appender (un composant de log4j) par enregistreur
  • Il est largement utilisé dans l'industrie et définit les paramètres d'internalisation.
  • Log4j prend en charge plusieurs niveaux de journalisation tels que WARN, INFO et ERROR.
  • Le format d'enregistrement et la destination peuvent être modifiés facilement en changeant la classe de mise en page et en implémentant l'interface appender.

4. Slf4j peut être configuré pour utiliser Log4j comme backend de journalisation pour travailler ensemble, mais la conversion ultérieure n'est pas possible.

Tableau de comparaison Slf4j vs Log4j

Voyons quelques différences supplémentaires entre Slf4j et Log4j

TitreSlf4jLog4j
MigrationLe Slf4j est compatible avec toutes ses versions précédentes. Un utilisateur peut facilement migrer de slf4j vers n'importe quelle version sans aucun problème.Il y a plusieurs obstacles car il faut s'occuper de la migration, en parlant du Log4j2, la rétrocompatibilité n'est pas possible.
Dernière versionSsl4j a publié sa dernière version stable de 1.7La version 2.0.8 est la dernière édition.
Choix des préférencesLes bibliothèques et les composants intégrés devraient préférer ssl4j pour leurs besoins de journalisation car ces bibliothèques n'ont pas le choix du cadre de journalisation pour l'utilisateur final.Chaque fois que vous avez besoin d'une approche plus dynamique et flexible qui offre plus de fonctionnalités.
Conditions préalablesTout d'abord, les pré-requis varient selon les versions. Les versions ultérieures ont des exigences différentes par rapport à leurs homologues plus récents. Voyons certaines de ces exigences -

  • slf4j-nop: JDK 1.5
  • slf4j-simple: JDK 1.5
  • slf4j-log4j12: JDK 1.5, ainsi que toutes les autres dépendances de bibliothèque requises par l'appender log4j en cours d'utilisation
  • slf4j-jdk14: JDK 1.5 ou version ultérieure
  • logback-classic: JDK 1.5 ou version ultérieure
Il existe plusieurs dépendances basées sur les exigences, mais les quelques importantes et généralement considérées sont mentionnées ci-dessous -

  • log4j 1.2.8 et les versions précédentes sont compatibles avec JDK 1.1.x, tandis que la version ultérieure de log4j 1.2 est compatible avec JDK 1.2 et versions ultérieures
  • Le test log4j s'appuie sur le framework de test JUnit
  • org.aache.log4j nécessite l'API JMS et JNDI
ApisCertaines API slf4j courantes sont -

  • jcl-over-slf4j
  • jul-to-slf4j (pour java.util.logging)
  • Log4j-over-slf4j (API compatible avec log4j)
Certaines des API log4j sont -

  • Category.getParent ()
  • Category.setLevel ()
  • Category.setPriority ()
  • Category.getAdditivity ()
  • Category.setAdditivity ()
  • Category.getResourceBundle ()
  • BasicConfigurator.configure ()

Conclusion

La journalisation est une partie essentielle du dépannage des applications, c'est un paramètre de développement permettant de rechercher les problèmes pendant le cycle de développement. Concernant la journalisation, nous avons été témoins de deux acteurs cruciaux, à savoir CLF4J et LOG4J. Nous avons également vu ce que sont SLF4J et LOG4J, quelles sont leurs possibilités et comment les utiliser. Essentiellement, ils sont utilisés par les développeurs pour la journalisation et ont des directives d'utilisation spécifiques

Nous avons répertorié un schéma de principe de la façon dont ces deux s'inscrit dans le scénario de journalisation -

Articles recommandés

Ceci est un guide pour Slf4j vs Log4j. Nous discutons ici des différences clés entre Slf4j et Log4j avec des infographies et un tableau de comparaison. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Ansible vs Puppet
  2. Ansible vs Puppet vs Chef
  3. Debian vs Arch
  4. Kubernetes vs Docker