如何配置netty logger工厂以查看LoggingHandler的输出?

如何配置netty logger工厂以查看LoggingHandler的输出?,netty,slf4j,Netty,Slf4j,我正在使用带有logback的slf4j日志记录,在我的应用程序开始时,我编写了 InternalLoggerFactory.setDefaultFactory(new Slf4JLoggerFactory()); 然后,我向管道中添加了一个新的LoggingHandler(InternalLogLevel.DEBUG)实例。 不幸的是,这仍然没有记录任何东西,我是调试到和调试级别的问题,只是跳过记录本身 我应该如何设置才能使用此LoggingHandler?我已经做了一个小示例,它确实有效-

我正在使用带有logback的slf4j日志记录,在我的应用程序开始时,我编写了

InternalLoggerFactory.setDefaultFactory(new Slf4JLoggerFactory());
然后,我向管道中添加了一个新的
LoggingHandler(InternalLogLevel.DEBUG)
实例。 不幸的是,这仍然没有记录任何东西,我是调试到和调试级别的问题,只是跳过记录本身


我应该如何设置才能使用此
LoggingHandler

我已经做了一个小示例,它确实有效-我将它放在了上面。它使用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)静态初始值设定项的两条调试消息:


您能更详细地告诉我调试的问题是什么吗?我看不出调试级别的日志记录不起作用的任何原因。自己在调试级别进行日志记录是否有效?如果是这样的话,您能为我们提供重现问题的特定代码吗?您的项目类路径中是否有
slf4j api.jar
sl4j
(如
logback
)的一些实现?您还需要在特定于实现的配置文件中配置日志级别(如
logback.xml
for
logback
)。您可以尝试将上面的代码行放入
static{}
初始化代码块中吗?但是Netty没有使用我的根记录器,我有以下命令:10:36:40447 |-在记录器中发出警告[io.netty.channel.MultithreadEventLoopGroup]-记录器[io.netty.channel.MultithreadEventLoopGroup]的上下文[default]中不存在任何附加程序。Slf4JLoggerFactory似乎不受欢迎。您需要使用
InternalLoggerFactory.setDefaultFactory(Slf4JLoggerFactory.INSTANCE)改为
。注意添加
LoggingHandler
类似于
LoggingHandler(InternalLogLevel.DEBUG)
如图所示,将记录器名称设置为
LoggingHandler
的FQN,这几乎总是不可取的。要设置记录器名称,请将
字符串
作为第一个参数传递。
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