3

logback への切り替えが差し迫っていますが、log4j で slf4j を使用して tomcat6 サーブレット コンテナー内でアプリケーションを実行しています。

アプリケーションは休止状態を頻繁に使用するため、当面は休止状態の SQL ロギングをオンにする必要があります。

ただし、大量の反復的な (そして退屈な) 呼び出しを休止状態にし、大量のログを生成するコード パスが 1 つあります。

特定のロガーのログレベルを変更できるようにしたいのですが、それは現在実行中のスレッドに対してのみ行われます。

MDC について読んだことがありますが、スレッドごとに追加の「ラベル」を追加するためにのみ使用でき、特定のロガーの実際のログ レベルを変更するためには使用できないようです。

これは実行可能ですか?

4

2 に答える 2

3

その特定のスレッドからのイベントを無視するフィルターを実装できるかもしれません。あなたが言ったように、おそらくMDCを使用してソーススレッドを特定できます。

于 2013-05-09T19:38:52.307 に答える
1

クラス名とスレッド名の両方に基づく slf4j ロガーを作成できます。

logger = LoggerFactory.getLogger(getClass().getName() + "." + Thread.currentThread().getName());

次に、スレッドごとに異なるログバック構成を使用します。また、ロガー インスタンスを ThreadLocal 変数にキャッシュして、パフォーマンスへの影響を最小限に抑えることもできます。

于 2013-05-09T20:47:40.247 に答える