Cela semble être une erreur de négligence, mais je n'arrive pas à trouver la cause. Journalisation avec logback / slf4j (version la plus récente slf4j-api-1.6.1, logback core / classic 0.9.24). La configuration de journal la plus simple pour les tests est:
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<!-- DONT USE THIS FORMATTER FOR LIVE LOGGING THE %L LINE NUMBER OUTPUTTER IS SLOW -->
<pattern>%le %-1r [%c{1}:%L] %m%n</pattern>
</layout>
</appender>
<root level="DEBUG">
<appender-ref ref="stdout" />
</root>
</configuration>
Chaque configuration de journal commence par les lignes d'état internes de Logback:
11:21:27,825 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
11:21:27,826 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:.../logback-test.xml]
11:21:28,116 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
11:21:28,124 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
11:21:28,129 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [stdout]
11:21:28,180 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [layout] on top of the object stack.
11:21:28,206 |-WARN in ch.qos.logback.core.ConsoleAppender[stdout] - This appender no longer admits a layout as a sub-component, set an encoder instead.
11:21:28,206 |-WARN in ch.qos.logback.core.ConsoleAppender[stdout] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
11:21:28,206 |-WARN in ch.qos.logback.core.ConsoleAppender[stdout] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
11:21:28,207 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
11:21:28,207 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [stdout] to Logger[ROOT]
qui est, selon la documentation, le format utilisé par logback par défaut. Il termine ensuite la lecture de la configuration (qui est configurée pour produire un format différent) et continue avec la sortie correctement formatée. Il y a un paramètre de configuration <configuration debug="false">
qui n'affecte pas cela.
Quelqu'un sait comment arrêter cela?
Réponses:
Si vous définissez l'
debug
attribut de l'configuration
élément surtrue
, vous obtiendrez toutes les informations d'état sur la console. Si c'est votre problème, définissez-le simplement sur false ou supprimez-le.Si vous rencontrez des problèmes de configuration de niveau
WARN
ou supérieur, vous obtiendrez également toutes les informations d'état enregistrées dans la console (y compris les messages de niveauINFO
). La meilleure solution à ce problème est de résoudre le problème (dans votre cas, remplacez l'<layout>
élément par un<encoder>
élément).Si, pour une raison quelconque, vous ne pouvez pas résoudre le problème, mais que vous souhaitez supprimer les informations d'état de la console, vous pouvez à la place configurer une alternative
StatusListener
. UtilisezNopStatusListener
pour supprimer complètement les informations d'état:la source
INFO
messages du journal disparaîtraient également, mais en fait, ils le font. Je sais que la réponse le dit, mais pour une raison quelconque, ce n'était pas clair pour moi. Pour être si clair: corrigez le problème d'encodeur / disposition et non seulement les messages d'avertissement disparaîtront, mais les messages d'information disparaîtront également, même s'ils ne sont pas liés au problème.Comme décrit dans la documentation , si des avertissements ou des erreurs se produisent pendant l'analyse du fichier de configuration, logback imprimera automatiquement les données d'état sur la console.
Suivez http://logback.qos.ch/codes.html#layoutInsteadOfEncoder c'est à dire le lien mentionné par logback dans son message d'avertissement. Une fois que vous avez suivi les étapes qui y sont mentionnées, c'est-à-dire que si vous remplacez l'élément <layout> par <encoder>, la journalisation arrêtera d'imprimer les messages sur la console.
la source
debug="true"
attribut dans l'configuration
élément delogback.xml
. Veuillez le mentionner pour le bénéfice des autres personnes qui tombent dans ce trou!La réponse de Ceki est correcte:
Une fois que vous avez bien fait les choses, il n'y aura plus de pollution dans les premières lignes de votre journal.
Depuis mars 2015, dans Logback 1.1.2 , vous devez utiliser le
<encoder>
sous-composant -<layout>
est maintenant obsolète et si vous l'utilisez, des messages d'erreur apparaîtront. Vous ne pouvez pas contrôler cela, c'est le comportement par défaut de Logback .Certaines classes internes ont également été renommées, et même les exemples de leur page de manuel sont obsolètes!
Voici l'extrait de code de leur page d'aide sur les codes d'erreurs , qui a la bonne façon de configurer l'enregistreur. Cela a résolu complètement le problème dans mon projet. http://logback.qos.ch/codes.html#layoutInsteadOfEncoder
la source
J'ai réalisé que Steve avait trouvé le correctif mais il ne l'a pas mentionné sur le fil. Au cas où une autre personne rencontrait le même problème, voici le correctif.
Remplacez les éléments "<layout>" par "<encoder> .. </encoder>"
Le coupable est: <layout class = "ch.qos.logback.classic.PatternLayout">
la source
J'ai lutté avec le même problème moi-même, c'est-à-dire qu'il y avait un tas de lignes enregistrées au début qui n'étaient pas liées à mon code. Voici comment je l'ai résolu.
Ceci s'exécute avec l'entrée suivante dans le pom.xml
la source
Cela semble être corrigé dans la version 0.9.29. Je viens de faire plusieurs tests. Plus d'INFO Joran. Je suppose que c'est la fixation engage.
la source
J'ai eu le même problème j'ai ajouté cette ligne
dans le logback et cela a fonctionné avec succès
la source
J'ai tout essayé et rien n'a fonctionné pour moi. Mon problème était dû à plusieurs fichiers logback.xml dans mon chemin de classe. C'est le cas courant dans les projets multi-modulaires. Lorsqu'il n'y a qu'un seul fichier logback.xml dans classpath, il n'y a aucune ambiguïté et le problème est résolu.
la source
En utilisant le
logback.groovy
:statusListener(NopStatusListener)
(dans lesrc/test/resources/logback.groovy
) fonctionne.(Un cas d'utilisation valide est, par exemple, si vous travaillez avec ANT dans Eclipse, en utilisant la journalisation de retour, les classes groovy et les tests unitaires où les tests unitaires prennent le
src/test/resources/logback.groovy
, mais verront également lesrc/main/resources/logback.groovy
(ou similaire) que vous ne pouvez pas exclure (si le chemin de classe d'ANT est dit utiliser le chemin de classe des projets).)la source
Je préfère utiliser l’écouteur de statut pour désactiver mes propres journaux de connexion:
Mais comme cela a été mentionné, NopStatusListener empêche également d'afficher les avertissements et les erreurs. Vous pouvez donc écrire votre écouteur de statut personnalisé et modifier manuellement le niveau de journalisation:
Ensuite, utilisez-le dans votre fichier logback.xml:
la source