Quelle est la différence entre Java Logger et System?hors.println
j'ai cherché l'api à propos de la classe logger(ici) et j'ai été à la recherche à l' Logger.info
méthode. J'ai été confus quand j'ai vu son périmètre comme un message affiché comme une chaîne de caractères public void info(String msg)
ce qui est identique à System.out.println()
. Je me demande Quelle est la différence entre ces deux-là, et pourquoi utilisons-nous Logger au lieu de System.out.println
quand ils peuvent imprimer la même chose.
Dans L'Enregistreur.
Logger.info("Hello")
Sortie:
[INFO ] 2015-08-07 11:18:46.140 [main] ClassName Hello
Dans System.out.println
`Système.hors.println("Bonjour")
Sortie: Bonjour
4 réponses
Habituellement, parce que un Logger
peut être configuré pour écrire dans un fichier (dans la console). Il peut également être configurée au niveau supérieur (ou inférieur) granularité de messagerie. Par exemple, vous pouvez configurer (à l'exécution) pour le niveau de warn. Dans ce cas, ce pillard ne s'afficherait pas!-2 -- > debug ou info messages. Il peut inclure des renseignements tels que la classe qui écrit, un numéro de ligne et une date et une heure (du message).
L'utilisation d'un logger vous permet d'abstraire beaucoup de détails et de faire beaucoup plus que vous pourriez écrire à stdout.
Vous pouvez spécifier différentes destinations à écrire. Différents utilisateurs écrivent à un fichier, roulent le fichier pour des périodes données, écrivent à une file d'attente ou à une base de données, etc.
vous pouvez spécifier un format cohérent pour les messages de journal au lieu d'avoir à l'ajouter à chaque ligne que vous écrivez à stdout.
vous peut choisir un appender qui tamponne la sortie de sorte que plusieurs threads peuvent se connecter sans avoir les threads combattent pour la serrure sur l'objet console.
vous pouvez faire beaucoup avec le filtrage par catégorie (généralement paquet et nom de classe) et le niveau de log (trace, debug, info, erreur, fatal), pour le rendre facile de configurer quels messages de log vous voulez voir et que vous voulez ignorer. Avec la journalisation, vous pouvez modifier la configuration dans les propriétés logger ou inclure une page dans votre demande de changement de ce qui est filtré à la volée.
vous pouvez mélanger et faire correspondre ce genre de choses, par exemple, configurer un appender smtp spécifique pour envoyer des messages de journalisation pour le niveau d'erreur de journalisation ou plus, en plus d'écrire les messages dans un fichier roulant ou autre.
la différence principale entre un Logger et le système.hors.println Logger:
Imprime le texte dans un fichier(fichier texte)System.out.println:
imprime la sortie dans la console
Logger est utile lorsque vous allez à des projets en direct.
Parce que si un projet est développé et déployé, alors vous ne pouvez pas vérifier la console. A ce moment Logger sera utile pour suivre le flux de votre projet vous pouvez également trouver de l'Erreur ou Exception si vous avez donné le logger dans la prise{...} bloc.
Passez aussi par ceci Enregistreur de vs Système.hors.println
- mais lorsque nous utilisons un mécanisme de journalisation(log4j, slf4j, logback etc) nous
configurer les appenders et les fichiers de log cibles correspondants pour chaque
paquet. Par défaut, la console appender est désactivée sauf si vous
configurez-le explicitement pour qu'il se connecte à une destination.
- Le Système.hors.println enregistre toujours le message sur une console appender. Donc, il devrait être utilisé que lorsque nous sommes sûrs que la console appender est configuré dans le fichier de configuration du logger. Sinon nous sommes en fin de jusqu' avoir des logs connectés à la console du serveur, ce qui est incorrect. Un journal de à l'intérieur de l'application doit aller au journal d'application correspondant et pas le journal du serveur.
Laissez-moi vous expliquer avec un exemple.
- si nous construisons une application appelée Tracker en utilisant un mécanisme de journalisation pour exécuter dans un conteneur tomcat, et nous avons configuré des appenders pour la journalisation des applications avec le fichier de log de destination comme tracker-application.journal et nous n'avons pas configurer la console appender.
- alors si le système.hors.println est rencontré par la JVM puis le journal va aller dans le journal du serveur du serveur tomcat ce qui est faux car le journal du serveur ne doit contenir que des informations sur le serveur et non sur l'application.
mais si nous avons créé une console appender avec un fichier cible log alors il sera enregistré correctement.
j'Espère avoir été le plus clair. ;)
Pour les meilleures pratiques référer N'utilisez pas le système.hors.println à côté serveur code ou http://www.vipan.com/htdocs/log4jhelp.html
pour les différences entre les deux s'il vous plaît se référer Enregistreur de vs Système.hors.println