1

我在我的游戏服务器中使用 SLF4J项目中使用 SLF4J。然而,netty 特定的日志如下所示。

2013-06-08 13:37:30,254 [Slf4JLogger.java:71][DEBUG]:使用 SLF4J 作为默认日志框架
2013-06-08 13:37:30,261 [Slf4JLogger.java:71][DEBUG]:平台:Windows
2013-06-08 13:37:30,270 [Slf4JLogger.java:76][DEBUG]:Java 版本:7
2013-06-08 13:37:30,273 [Slf4JLogger.java:76][DEBUG]:java.nio.ByteBuffer.cleaner:可用
2013-06-08 13:37:30,274 [Slf4JLogger.java:76][DEBUG]:java.nio.Buffer.address: 可用
2013-06-08 13:37:30,274 [Slf4JLogger.java:76][DEBUG]:sun.misc.Unsafe.theUnsafe: 可用
2013-06-08 13:37:30,275 [Slf4JLogger.java:71][DEBUG]:sun.misc.Unsafe.copyMemory: 可用
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: 可用
2013-06-08 13:37:30,278 [Slf4JLogger.java:71][DEBUG]:Javassist: 不可用

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

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

我在这里配置错了什么?

4

1 回答 1

1

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

您的模式应如下所示:

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

编辑由于评论:

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

%c{1}

请参阅文档:

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

于 2013-06-09T01:04:34.933 回答