0

を使用std::threadすると、スレッド名のリストをプログラム状態に保つのが簡単になります(スレッドをラップするか、シングルトンを使用してスレッドリストを管理します)。

ロギングにlog4cxxを使用し始めていますが、スレッド名を表示させたいのですが。ただし、これは、PatternLayoutを使用できないことを意味します。スレッド番号だけではあまり役に立ちません。

これを行うための最良の方法は何ですか?マップを出力するだけで行き詰まっているのでしょうか、それともPatternLayout/ConversionPatternを巧妙な方法でオーバーライドして、やりたいことを実行できますか?そして、それをオーバーロードした場合、構成ファイルでクラスをポイントするにはどうすればよいですか?または、変換文字を追加できますか?

4

1 に答える 1

1

プログラムにロガーを設定する前に、MDCを使用してスレッド名を入力してください

 MDC::put( "threadName", threadNameString);

次に、XML構成で

   <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%X{threadName} "/>
    </layout>

したがって、各ログメッセージで、スレッド名が表示されます。

詳細については、この質問の回答を確認してください:log4cxxのログファイル名にプロセスIDを追加します

于 2012-02-14T17:23:32.713 に答える