C ++线程名称映射和log4cxx

时间:2012-02-12 05:26:54

标签: c++ multithreading log4cxx

使用std::thread,现在可以保持程序状态中的线程名称列表(通过包装线程,或使用单例来管理线程列表)。

我开始使用log4cxx进行日志记录,我想让它显示线程名称。但是,这意味着我无法使用PatternLayout。线程编号本身并不是很有用。

最好的方法是什么?我只是输出一张地图,还是可以巧妙地覆盖PatternLayout / ConversionPattern来做我想要的事情?如果我重载它,我如何指向配置文件中的类?或者我可以添加转换字符吗?

1 个答案:

答案 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