2012-02-12 40 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> 

因此,在每個日誌消息,你的線程的名字將apear設置記錄儀

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

然後把之前使用MDC你的線程的名字。

有關更多信息,請查看此問題的答案:Add process id to log file name in log4cxx