C++线程名称映射和log4cxx

C++ thread name map and log4cxx

本文关键字:log4cxx 映射 线程 C++      更新时间:2023-10-16

有了std::thread,现在保持程序状态下的线程名称列表是很简单的(通过包装线程,或者使用singleton来管理线程列表。)

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

最好的方法是什么?我是只能输出一个映射,还是可以巧妙地覆盖PatternLayout/ConversionPattern来完成我想要的操作?如果我重载了它,我该如何指向配置文件中的类?或者我可以添加一个转换字符吗?

在程序中设置记录器之前,使用MDC设置线程名称

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

然后在XML配置

   <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%X{threadName} "/>
    </layout>

因此,在每条日志消息中,您的线程名称都会显示出来。

有关更多信息,请查看此问题的答案:将进程id添加到log4cxx 中的日志文件名