1

Slf4j と Log4j を使用するゲーム サーバープロジェクトでSLF4Jを使用しています。ただし、netty 固有のログは次のように出力されます。

2013-06-08 13:37:30,254 [Slf4JLogger.java:71][DEBUG]: SLF4J をデフォルトのロギング フレームワークとして使用する
2013-06-08 13:37:30,261 [Slf4JLogger.java:71][デバッグ]:プラットフォーム: Windows
2013-06-08 13:37:30,270 [Slf4JLogger.java:76][デバッグ]:Java バージョン: 7
2013-06-08 13:37:30,273 [Slf4JLogger.java:76][デバッグ]:java.nio.ByteBuffer.cleaner: 利用可能
2013-06-08 13:37:30,274 [Slf4JLogger.java:76][デバッグ]:java.nio.Buffer.address: 利用可能
2013-06-08 13:37:30,274 [Slf4JLogger.java:76][デバッグ]:sun.misc.Unsafe.theUnsafe: 利用可能
2013-06-08 13:37:30,275 [Slf4JLogger.java:71][デバッグ]:sun.misc.Unsafe.copyMemory: 利用可能
2013-06-08 13:37:30,276 [Slf4JLogger.java:76][デバッグ]:java.nio.Bits.unaligned: true
2013-06-08 13:37:30,276 [Slf4JLogger.java:76][デバッグ]: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 に答える