为什么不使用netty日志显示正确的类和包信息

时间:2013-06-08 17:57:55

标签: java log4j netty slf4j

我在使用Slf4j和Log4j的game server项目中使用SLF4J。但是,特定于netty的日志如下所示。

2013-06-08 13:37:30,254 [Slf4JLogger.java:71][DEBUG]:Using SLF4J as the default logging framework
2013-06-08 13:37:30,261 [Slf4JLogger.java:71][DEBUG]:Platform: Windows
2013-06-08 13:37:30,270 [Slf4JLogger.java:76][DEBUG]:Java version: 7
2013-06-08 13:37:30,273 [Slf4JLogger.java:76][DEBUG]:java.nio.ByteBuffer.cleaner: available
2013-06-08 13:37:30,274 [Slf4JLogger.java:76][DEBUG]:java.nio.Buffer.address: available
2013-06-08 13:37:30,274 [Slf4JLogger.java:76][DEBUG]:sun.misc.Unsafe.theUnsafe: available
2013-06-08 13:37:30,275 [Slf4JLogger.java:71][DEBUG]:sun.misc.Unsafe.copyMemory: available
2013-06-08 13:37:30,276 [Slf4JLogger.java:76][DEBUG]:java.nio.Bits.unaligned: true
2013-06-08 13:37:30,276 [Slf4JLogger.java:76][DEBUG]:sun.misc.Unsafe: available
2013-06-08 13:37:30,278 [Slf4JLogger.java:71][DEBUG]:Javassist: unavailable

他们不显示实际的netty类和包信息。我对应的Log4j模式是:

log4j.appender.toLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.toLogFile.layout.ConversionPattern= %d [%F:%L][%p]:%m%n

我在这里配置错误了什么?

1 个答案:

答案 0 :(得分:1)

尝试在您的模式中使用%c而不是%F%F - 输出发出日志记录请求的文件名,%c输出记录器名称。在Netty中,所有日志记录都通过包装类进行,它是Slf4JLogger.class

您的模式应如下所示:

log4j.appender.toLogFile.layout.ConversionPattern =%d [%c :%L] [%p]:%m%n

由于评论而编辑:

是的,有一种方法只能打印文件名:

%c{1}

参见文档:

http://logging.apache.org/log4j/2.x/manual/layouts.html#Patterns