Как настроить netty logger factory, чтобы увидеть вывод LoggingHandler? - PullRequest
13 голосов
/ 24 марта 2012

Я использую ведение журнала slf4j с logback, и в начале своего приложения я написал

InternalLoggerFactory.setDefaultFactory(new Slf4JLoggerFactory());

, затем добавил в конвейер новый экземпляр LoggingHandler(InternalLogLevel.DEBUG).К сожалению, это по-прежнему ничего не регистрирует, я отлаживал и проблема в уровне отладки, просто пропускает саму запись в лог.

1 Ответ

10 голосов
/ 24 декабря 2012

Я сделал небольшой пример, который работает - я поместил его в gist на github . Он использует logback как серверную часть slf4j. Моменты, на которые следует обратить внимание:

  • InternalLoggerFactory.setDefaultFactory(Slf4JLoggerFactory.INSTANCE); должно быть выполнено прямо в точке входа вашей программы. Иногда эту «точку входа» бывает очень сложно определить.
  • Правильная настройка бэкэнда slf4j. Так как slf4j является только оболочкой, он вообще не имеет дело с конфигурацией - он специфичен для log4j, logback или java.util.logging (или, может быть, некоторого пользовательского бэкенда) - я много работал с настраиваемым конфигуратором «java commons logging», действительно что-нибудь действительно может быть использовано)
  • Даже без LoggingHandler вы должны увидеть два отладочных сообщения от статического инициализатора org.jboss.netty.channel.socket.nio.SelectorUtil (с Netty версии 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
    
...