C++线程名称映射和log4cxx
C++ thread name map and log4cxx
有了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 中的日志文件名
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 将函数类成员映射到类本身内部
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 使用std::函数映射对象方法
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++映射分割错误(核心转储)
- 内联映射初始化的动态atexit析构函数崩溃
- 使用"std::unordereded_map"映射到"std::list"对象
- 如何从多映射中删除特定的重复项
- 在未初始化映射的情况下,将值插入到映射的映射中
- QT通过C++添加映射QML项目
- 在c++中访问int到类对象的映射时出错
- 在C++中搜索嵌套多映射值
- 错误处理.将系统错误代码映射到泛型
- C++匿名结构作为std::映射值
- 如何从存储在std::映射中的std::集中删除元素
- 递归无序映射
- C++线程名称映射和log4cxx