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

标签 java log4j netty slf4j

我在我的 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/

相关文章:

java - Firebase:根据另一个节点中的字段从一个节点获取特定字段

java - 获取 Apache Log4j 的 "Receivers Companion"

java - Netty:向许多服务器发送消息时出现问题

java - 在 Reactor Netty HttpClient/HttpServer 配置中,我无法在发送到服务器的帖子上检索请求对象

java - 使用数组实现 Set 类

java - 使用正则表达式从字符串中删除可选编号

Java布局-为不可见元素留出一定的空间

tomcat - Grails + log4j :ERROR WARNING: Exception occured configuring log4j logging: No such property: delegate for class: java. lang.String

java - 在 oc4j 10.1.3 中使用 log4j

java - LibGDX - HTML5 runner,带网络?