使用std::thread
,现在可以保持程序状态中的线程名称列表(通过包装线程,或使用单例来管理线程列表)。
我开始使用log4cxx进行日志记录,我想让它显示线程名称。但是,这意味着我无法使用PatternLayout。线程编号本身并不是很有用。
最好的方法是什么?我只是输出一张地图,还是可以巧妙地覆盖PatternLayout
/ ConversionPattern
来做我想要的事情?如果我重载它,我如何指向配置文件中的类?或者我可以添加转换字符吗?
答案 0 :(得分:1)
在程序中设置记录器之前使用MDC设置线程名称
MDC::put( "threadName", threadNameString);
然后在XML配置
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%X{threadName} "/>
</layout>
因此,在每条日志消息中,您的线程名称都会出现。
有关详细信息,请查看此问题的答案:Add process id to log file name in log4cxx