Dies scheint ein Fehler in Bezug auf Nachlässigkeit zu sein, aber ich kann die Ursache nicht finden. Protokollierung mit logback / slf4j (neueste Version slf4j-api-1.6.1, logback core / classic 0.9.24). Die einfachste Protokollkonfiguration zum Testen ist:
<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>
Jedes Protokoll-Setup beginnt mit den internen Statuszeilen von 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]
Dies ist laut Dokument das Standard-Logback, das standardmäßig verwendet wird. Anschließend wird die Konfiguration (die für die Ausgabe eines anderen Formats eingerichtet ist) gelesen und die ordnungsgemäß formatierte Ausgabe fortgesetzt. Es gibt einen Konfigurationsparameter, <configuration debug="false">
der dies nicht beeinflusst.
Weiß jemand, wie man das abschaltet?
Antworten:
Wenn Sie das
debug
Attribut desconfiguration
Elements auf festlegentrue
, werden alle Statusinformationen an die Konsole gesendet. Wenn dies Ihr Problem ist, setzen Sie es einfach auf false oder entfernen Sie es.Wenn Sie Konfigurationsprobleme der Stufe
WARN
oder höher haben, werden auch alle Statusinformationen an der Konsole protokolliert (einschließlich Meldungen der StufeINFO
). Die beste Lösung für dieses Problem besteht darin, das Problem zu beheben (in Ihrem Fall ersetzen Sie das<layout>
Element durch ein<encoder>
Element).Wenn Sie das Problem aus irgendeinem Grund nicht beheben können, aber die Statusinformationen von der Konsole entfernen möchten, können Sie stattdessen eine Alternative konfigurieren
StatusListener
. Verwenden Sie dieNopStatusListener
, um die Statusinformationen vollständig zu entfernen:quelle
INFO
Protokollnachrichten auch verschwinden würden, aber tatsächlich. Ich weiß, dass die Antwort dies sagt, aber aus irgendeinem Grund war es mir nicht klar. Um ganz klar zu sein: Beheben Sie das Encoder- / Layout-Problem und die Warnmeldungen verschwinden nicht nur, sondern auch die Infomeldungen, auch wenn sie nicht mit dem Problem zusammenhängen.Wie in den Dokumenten beschrieben , druckt Logback automatisch Statusdaten auf der Konsole, wenn beim Parsen der Konfigurationsdatei Warnungen oder Fehler auftreten.
Folgen Sie http://logback.qos.ch/codes.html#layoutInsteadOfEncoder, dh dem Link, der von logback in seiner Warnmeldung erwähnt wird. Sobald Sie die darin genannten Schritte ausgeführt haben, dh wenn Sie das <layout> -Element durch <encoder> ersetzen, wird bei der Rückmeldung das Drucken von Nachrichten auf der Konsole beendet.
quelle
debug="true"
Attribut imconfiguration
Element von zu habenlogback.xml
. Bitte erwähnen Sie dies zum Nutzen anderer Menschen, die in dieses Loch fallen!Ceki Antwort ist richtig:
Sobald Sie es richtig verstanden haben, wird es in den ersten Zeilen Ihres Protokolls keine Verschmutzung mehr geben.
Ab März 2015 müssen Sie in Logback 1.1.2 die
<encoder>
Unterkomponente verwenden. Diese<layout>
ist jetzt veraltet. Wenn Sie sie verwenden, werden Fehlermeldungen angezeigt . Sie können dies nicht steuern. Dies ist das Standardverhalten von Logback .Einige interne Klassen wurden ebenfalls umbenannt, und sogar die Beispiele auf ihrer Handbuchseite sind veraltet!
Hier ist das Code-Snippet von der Hilfeseite "Fehlercode" , auf der der Logger korrekt konfiguriert werden kann. Dies hat das Problem in meinem Projekt vollständig behoben. http://logback.qos.ch/codes.html#layoutInsteadOfEncoder
quelle
Mir wurde klar, dass Steve das Update gefunden hatte, aber er erwähnte es nicht im Thread. Falls eine andere Person das gleiche Problem hat, ist dies die Lösung.
Ersetzen Sie "<layout>" - Elemente durch "<encoder> .. </ encoder>"
Der Schuldige ist: <layout class = "ch.qos.logback.classic.PatternLayout">
quelle
Ich hatte selbst mit dem gleichen Problem zu kämpfen, dh es wurden gleich zu Beginn eine Reihe von Zeilen protokolliert, die nicht mit meinem Code zusammenhängen. Hier ist, wie ich es behoben habe.
Dies wird mit dem folgenden Eintrag in der Datei pom.xml ausgeführt
quelle
Dies scheint in 0.9.29 behoben zu sein. Habe gerade mehrere Tests gemacht. Keine Joran INFO mehr. Ich denke, dies ist das Fixing-Commit.
quelle
Ich hatte das gleiche Problem, das ich dieser Zeile hinzugefügt habe
im Logback und es hat erfolgreich funktioniert
quelle
Ich habe alles versucht und nichts hat bei mir funktioniert. Mein Problem war auf mehrere logback.xml-Dateien in meinem Klassenpfad zurückzuführen. Dies ist häufig bei multimodularen Projekten der Fall. Wenn sich nur eine logback.xml-Datei im Klassenpfad befindet, gibt es keine Mehrdeutigkeit und das Problem ist behoben.
quelle
Die Verwendung von
logback.groovy
:statusListener(NopStatusListener)
(in thesrc/test/resources/logback.groovy
) funktioniert.(Ein gültiger Anwendungsfall ist z. B. die Arbeit mit ANT in Eclipse, die Verwendung von Logback-Protokollierung, groovigen Klassen und Komponententests, bei denen die Komponententests durchgeführt werden
src/test/resources/logback.groovy
, aber auch diesrc/main/resources/logback.groovy
(oder ähnliche), die Sie nicht ausschließen können (wenn der Klassenpfad von ANT verwendet werden soll) der Projektklassenpfad).)quelle
Ich bevorzuge die Verwendung des Status-Listeners, um eigene Logback-Protokolle auszuschalten:
Wie bereits erwähnt, verhindert NopStatusListener jedoch auch das Anzeigen von Warnungen und Fehlern. So können Sie Ihren benutzerdefinierten Status-Listener schreiben und die Protokollstufe manuell ändern:
Verwenden Sie es dann in Ihrer logback.xml-Datei:
quelle