Wyłączyć wszystkie wyjścia Logback do konsoli?

Jak skonfigurować Logback tak, aby wyłączał wszystkie jego wyjścia na konsolę (standardowe wyjście)? W szczególności chcę stłumić (lub przekierować) własne komunikaty logback, takie jak:

16:50:25,814 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
16:50:25,814 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml]
16:50:25,816 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath.
16:50:25,816 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml]
16:50:25,816 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml]
16:50:25,923 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
16:50:25,924 |-INFO in ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter@1a15291 - Will scan for changes in file [/opt/dap/domains/ap0491/uat1/domain/instance-config/logback.xml] every 60 seconds. 

Muszę wyłączyć wszystkie logowania do standardowego wyjścia, ponieważ nasze środowisko produkcyjne uniemożliwia aplikacjom drukowanie jakichkolwiek wiadomości na standardowe wyjście.

Uwaga używam Logback 0.9.21, SLF4J 1.6.0, a nasza aplikacja działa w WebLogic 10.3.2.

Author: Derek Mahar, 2010-08-04

10 answers

Te wiadomości pokazują tylko wtedy, gdy co najmniej jedna z poniższych wartości jest prawdziwa:

  • masz włączone debugowanie w logbacku.plik xml
  • masz błąd w konfiguracji. Tak jest w tym przypadku - logback narzeka na odnalezienie wielu plików konfiguracyjnych.
  • występuje problem z klasą, jeśli środowisko zawiera sprzeczne pliki. (to przyszło mi do głowy wczoraj i było prawdziwą przyczyną tego pytania).
  • (jest błąd w logbacku-ma happen)

Popraw problem i te wiadomości powinny zniknąć.

 38
Author: Thorbjørn Ravn Andersen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-07 14:13:40

Holger Hoffstätte miał rację w swojej diagnozie , że zduplikowany wpis classpath jest objawem błędu w tym, jak logback liczy wpisy classpath. Robert Elliot również scharakteryzował problem w wątku na liście dyskusyjnej użytkownika Logback . Według Roberta i innych w tym powiązanym disussion na liście dyskusyjnej SLF4J, gdy aplikacja używająca Logbacka działa w kontenerze WebLogic, ze względu na sposób, w jaki WebLogic classloader działa, Logback zgłasza duplikaty wpisów classpath dla pliku konfiguracyjnego logback.xml. Jednak niezależnie od tego, czy WebLogic classloader powinien lub nie powinien zgłaszać tylko unikalnych wpisów classpath, Logback z pewnością powinien liczyć tylko unikalne wpisy classpath, aby nie wydrukować tej mylącej, fałszywej wiadomości.

Zaimplementowałem poprawkę dla LBCLASSIC-159 , która zasadniczo robi to, co zaleca Robert Elliot i używa zestawu zamiast listy aby utrzymać zasoby zwracane przez classloader, skutecznie eliminując duplikaty zasobów classpath. Pomyślnie przetestowałem poprawkę z Logback 0.9.24, SLF4J 1.6.1 i WebLogic 10.3.2. Zgodnie z przewidywaniami Thorbjørna w odpowiedzi , z tą poprawką, Logback nie wyświetla już na standardowe wyjście wiadomości o statusie wpisania classpath (ani żadnej innej wiadomości informacyjnej).

Mam nadzieję, że opiekunowie zintegrują moją poprawkę z głównym Logbackiem repozytorium kodu źródłowego {[3] } i dołączyć go do następnego wydania.

 16
Author: Derek Mahar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:19

To jest odpowiedź" ja też", przepraszam!

Szczęśliwie znalazłem rozwiązanie (patrz aktualizacja) poniżej.

W przeciwieństwie do innych odpowiedzi, otrzymuję strumień wiadomości LogBack configuration INFO pomimo braku ERRORs lub WARNs w fazie konfiguracji.

Oto moje wiadomości:

13:39:20,457 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
13:39:20,457 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
13:39:20,457 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/home/carl/workspace-LSY/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/IceProfile/WEB-INF/classes/logback.xml]
13:39:20,496 |-INFO in ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter@14e2c9c - Will scan for changes in file [/home/carl/workspace-LSY/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/IceProfile/WEB-INF/classes/logback.xml] every 60 seconds. 
13:39:20,496 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter
13:39:20,497 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
13:39:20,501 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
13:39:20,510 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
13:39:20,510 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [encoder] on top of the object stack.
13:39:20,537 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
13:39:20,537 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
13:39:20,538 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [ch.qos.logback] to OFF
13:39:20,538 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [ch.qos.logback] to false
13:39:20,538 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.

Oto moja konfiguracja:

<configuration debug="true" scan="true"> 

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- encoders are  by default assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>

  <logger name="ch.qos.logback" level="OFF" additivity="false" />

</configuration>

To jest spam, którego nie chcę, uważam się za niewinnego, że go sprowokowałem i byłbym wdzięczny za pomoc w pozbyciu się tego.

Jednym z powodów, dla których mogę być "winny" jest to, że inicjuję moje loggery w zmiennej static; dokumenty zalecają użycie zmiennych instancji zamiast tego.

Wersje:

  • logback-classic-0.9.24.jar
  • logback-core-0.9.24.jar
  • slf4j-api-1.6.1.jar
  • [[24]} uruchamianie w aplikacji IceFaces 2.0 działającej w Tomcat 6.0 pod Ubuntu 11.04

UPDATE

W końcu zorientowałem się, w czym problem był!

Fromthe fine manual (And Thorbjørn ' s answer):

Ustawienie atrybutu debug wewnątrz elementu spowoduje wyświetlenie informacji o stanie, przy założeniu, że

  1. znajduje się plik konfiguracyjny
  2. plik konfiguracyjny jest dobrze uformowanym XML.

Mój błąd to

<configuration debug="true" scan="true"> 
/ Align = "center" bgcolor = "# e0ffe0 " / cesarz chin / / align = center / mam nadzieję, że ta informacja pomoże innym.
 15
Author: Carl Smotricz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:19

Więc miałem ten sam problem, ale okazało się, że usunięcie błędnego wpisu , który był przestarzały gdzieś około 0.9.4 i wiadomości zniknęły...

You appender should look some thing like

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">

 <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  <level>info</level>
 </filter>

 <encoder>
  <pattern>%d{yyyy-MM-dd} %d{HH:mm:ss} %.-1level %thread %logger{36}: %m%n</pattern>
 </encoder>

</appender>

Napisałem na blogu o bardziej kompletnym opisie tego, co zmieniłem, które dla mnie zadziałało

 8
Author: Michael McCallum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-02 12:26:41

Nie znam Logbacka. Ale jeśli drukuje do System.out lub System.err, są to po prostu publiczne statyczne zmienne PrintStream w klasie System. Możesz podklasować PrintStream i ustawić zmienne wyjściowe systemu na swojej podklasie, kontrolując w ten sposób, jak to działa.

Na przykład:

public class NOPPrintStream extends PrintStream
{
    public NOPPrintStream() { super((OutputStream)null); }

    public void println(String s) { /* Do nothing */ }
    // You may or may not have to override other methods
}

public class MyClass
{
    public static void main(String[] args)
    {
        System.out = new NOPPrintStream();
        // Start program
    }
}

(Ten kod nie jest testowany)

 3
Author: Brian S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-03 22:02:14

W moim przypadku miałem " logback-test.xml " w zależnym projekcie, który był wdrażany jako webapp jar. "Logback-test.XML " plik zaczynający się od

<configuration debug="false" scan="true">
Nie jest to jednak żaden problem, ponieważ nie jest to możliwe.]}
ERROR in ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter@716de067 - URL [jar:file:/C:/Local...cut.../WEB-INF/lib/My.Dev.jar!/logback-test.xml] is not of type file

Co zaowocowało 67 (!) Więcej info lines.

Usuwając atrybut 'scan= "true", dziennik logback zniknął całkowicie.

 2
Author: xtian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-08 09:21:47

Faktycznie fakt, że ten sam logback.lokalizacja XML jest zgłaszane wiele razy wydaje się bardziej jak błąd w logback niż cokolwiek innego. Albo zgłoś to do LOGBACK JIRA (tutaj ) lub najpierw sprawdź, czy dany jar jest wielokrotnie na ścieżce classpath.

 2
Author: Holger Hoffstätte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-04 19:34:05

Najprawdopodobniej masz element skonfigurowany w logbacku.xml. Możesz go usunąć, jeśli nie chcesz żadnych aktualizacji konsoli dotyczących stanu samej struktury logowania. Jednak Platforma logback zaleca, aby nie wyłączać jej w celu rozwiązywania problemów.

Istnieje alternatywa dla słuchacza konsoli o nazwie StatusListenerAsList, która przechowuje wiadomości o statusie jako listę prywatną. W razie potrzeby możesz go udostępnić za pomocą JMX z odrobiną kodu.

 1
Author: baja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-06 02:15:06

Chcę tylko dodać informację o domyślnym nagłówku wiadomości dodanej w logback 1.0.2:

#logback.classic pattern: %d [%thread] %-5level %logger{36} - %msg%n

Znalazłem to w logback news , ale było to naprawdę trudne do znalezienia.

Jeśli chcesz usunąć tę wiadomość, musisz ustawić outputPatternAsPresentationHeader Na false:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d %-5level [%thread] %logger{0}: %msg%n</pattern>
        <!-- do not print pattern as a header -->
        <outputPatternAsPresentationHeader>false</outputPatternAsPresentationHeader>
    </encoder>
</appender>
 1
Author: Betlista,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-02 12:21:46
<configuration>
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
</configuration>

Po prostu Użyj klasy NopStatusLinstener, a to zatrzyma samoczynne logowanie logback.

 0
Author: Rupesh Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-23 07:24:26