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.
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ąć.
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.
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 ERROR
s lub WARN
s 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
- znajduje się plik konfiguracyjny
- 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.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
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
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)
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.
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.
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.
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>
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.
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