彩色增强::日志显示偏移的颜色
Colored boost::log shows shifted colors
我需要添加着色来提升Windows上的日志。非常简单-如果错误-使用红色墨水,如果警告-黄色墨水,否则-白色。引用我的代码毫无意义。我使用的正是这个解决方案(第二个答案,我想第一个答案只适用于Linux(:
如何为boost::log控制台输出添加颜色编码?
我发现了其他一些,但都是基于相同的原理——使用win32api设置控制台前景色,并在水槽中进行设置。问题是它不好。若日志接收来自多个来源的消息,有时会将颜色应用于片段(甚至不是完整的(行,通常还会应用于另一行(上一行或下一行(。我宣布sink是同步的(使用异步,着色看起来像一个疯子的画(。有什么办法稳定/解决这个问题吗?
Voitek
即使您的日志记录功能是线程安全的,使用它可能仍然需要同步。
考虑两个线程,每个线程执行以下操作之一:
strm << red << "message";
strm << white << "other message";
调度程序可能会调度
- 线程1执行
strm << red
- 线程2执行
strm << white
- 线程1执行
strm << "message"
- 线程2执行
strm << "other message"
您得到的是"message"answers"other message",均为白色。这仍然被认为是线程安全的。
第一个选项是将彩色消息连接在一个字符串中,并将其提供给日志API:
strm << red + "message";
。您需要修复这一行,使red
是一个std:string或可以与"message"
连接的东西。但重要的一点是loggin API一次只得到一个带有颜色和内容的调用。
第二种选择是在每个提交颜色和文本的日志块周围放置一个互斥对象。
相关文章:
- dx11 渲染到纹理仅显示透明颜色
- PPM 颜色显示错误
- 彩色增强::日志显示偏移的颜色
- 如何使用OpenCV同时显示"深度"和"颜色"视频图像
- PCL :PCL可视化工具在同一视口中以不同的颜色显示多点云(XYZ)
- 颜色设置在碎片着色器中,未显示GLSL 1.30
- 使多个形状以不同的位置、大小和颜色显示
- 在一个 QTableWidget 单元格中显示不同颜色的字符串
- 读取 TGA 显示空值而不是颜色数据
- 当QFilesystemModel显示驱动器时,是否可以在QTreeView中更改文件夹颜色
- 我怎样才能在 CRichEditCtrl 中更改突出显示颜色
- c++builder-显示没有标题的字节数组颜色信息
- 读取PPM文件并使用Opengl和c++进行显示.颜色不正确
- C++函数系统(命令)的输出在Linux终端中不显示颜色
- cv::imshow 在不同的线程上不显示 cv::mat 颜色
- 为什么 clang 在 Scons 下不显示颜色输出?
- 为什么显示的颜色不是VTK中预期的颜色
- 通过调整视频适配器反转显示颜色
- wxStaticBitmap不使用样式wxTRANSPARENT_WINDOW来反映父背景渐变,而不是显示父背景颜色
- 只有glClear(.)颜色显示,没有其他渲染(CUDA/OpenGL互操作)