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