2012-02-12 24 views
0

std::threadでは、プログラム状態でスレッド名のリストを維持することになりました簡単です(スレッドをラップすることにより、またはスレッドリストを管理するためにシングルトンを使用するか。)C++スレッド名マップとlog4cxx

私はロギングにlog4cxxを使い始めています。スレッド名を表示させたいのですが。しかし、これは私がPatternLayoutを使うことができないことを意味します。スレッド番号はそれほど有用ではありません。

これを行うにはどのような方法が最適ですか?私は地図を出力するだけで止まったのですか、または私が欲しいことをするために賢い方法でPatternLayout/ConversionPatternを上書きすることはできますか?私はそれをオーバーロードする場合、どのように設定ファイルのクラスを指していますか?または、変換文字を追加することはできますか?

答えて

1

だからあなたのスレッド名がつくれます各ログメッセージのXML設定ファイルで次に、あなたのプログラムに

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

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

をロガーを設定する前に、MDCを使用してスレッド名を入れてください。

この質問の回答を確認するにはAdd process id to log file name in log4cxx