0

有了std::thread,现在在程序状态中保持线​​程名称列表是微不足道的(通过包装线程,或者通过使用单例来管理线程列表。)

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

做这个的最好方式是什么?我是否坚持只输出地图,或者我可以以一种聪明的方式覆盖PatternLayout/ConversionPattern来做我想做的事?如果我重载它,我如何指向配置文件中的类?或者我可以添加一个转换字符吗?

4

1 回答 1

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

于 2012-02-14T17:23:32.713 回答