2012-03-24 16 views
12

Używam rejestrowanie slf4j z logback i na początku mojej aplikacji pisałemJak skonfigurować fabrykę netty logger, aby zobaczyć wyjście LoggingHandler?

InternalLoggerFactory.setDefaultFactory(new Slf4JLoggerFactory()); 

potem dodałem do rurociągu nowego LoggingHandler(InternalLogLevel.DEBUG) instancji. Niestety to nadal nie rejestruje niczego, debugowałem, a poziom debugowania jest problemem, po prostu pomija rejestrację.

W jaki sposób powinienem skonfigurować ten LoggingHandler?

+0

Czy możesz podać mi więcej szczegółów na temat problemu z DEBUG? –

+0

Nie widzę powodu, dla którego rejestrowanie na poziomie DEBUG nie działałoby. Czy logowanie na poziomie DEBUG przez Ciebie działa? Jeśli tak, czy możesz podać nam konkretny kod, który powiela problem? – trustin

+0

Czy masz 'slf4j-api.jar' i implementację' sl4j' (jak 'logback') w ścieżce klasy twojego projektu? Będziesz także musiał skonfigurować poziom logowania w pliku konfiguracyjnym specyficznym dla implementacji (np. 'Logback.xml' dla' logback'). –

Odpowiedz

10

Zrobiłem mały przykład, który działa - umieściłem go na gist on github. Używa logback jako zaplecza slf4j. Chwile, które powinny być zapłacone uwagę na to:

  • InternalLoggerFactory.setDefaultFactory(new Slf4JLoggerFactory()); powinny być wykonywane bezpośrednio na punkcie wejścia swojego programu. Czasami ten "punkt wejścia" może być bardzo trudny do ustalenia.
  • Właściwa konfiguracja backendu slf4j. Ponieważ slf4j jest tylko wrapperem, w ogóle nie zajmuje się konfiguracją - jest specyficzne dla log4j, logback lub java.util.logging (lub może jakiś niestandardowy backend - pracowałem ciężko z niestandardowym konfiguratorem "java commons logging", więc naprawdę coś naprawdę może być używany)
  • Nawet bez LoggingHandler powinieneś zobaczyć dwa komunikaty ze statycznego inicjatora z org.jboss.netty.channel.socket.nio.SelectorUtil (z Netty wersji 3.6.0.Final):

    11:54:00.959 [main] DEBUG o.j.n.c.socket.nio.SelectorUtil - Using select timeout of 500 
    11:54:00.962 [main] DEBUG o.j.n.c.socket.nio.SelectorUtil - Epoll-bug workaround enabled = false 
    
+0

Netty jednak nie używa mojego loggera root, mam następujące: 10: 36: 40,447 | -WARN w Logger [io.netty.channel.MultithreadEventLoopGroup] - Brak aplikacji w kontekście [domyślnie] dla logger [io.netty. channel.MultithreadEventLoopGroup]. – Edmondo1984

+0

To rozwiązanie działa dla mnie. – JBT