我在使用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
我在这里配置错误了什么?
答案 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