我在我的 game server 中使用 SLF4J使用 Slf4j 和 Log4j 的项目。然而,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
我在这里配置了什么错误?
最佳答案
尝试在模式中使用 %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
关于java - 为什么 netty 日志不显示正确的类和包信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17002284/