gpt4 book ai didi

c++ - 如何将颜色编码添加到 boost::log 控制台输出?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:33 25 4
gpt4 key购买 nike

我试图在 linux 下为 boost::log 添加彩色日志输出。我读了the following我试过这个:

#define MY_LOG_ERROR() BOOST_LOG_TRIVIAL(error) << "\033[1;31"

MY_LOG_ERROR() << "This is an error log."

但它给了我以下结果:

[2016-07-11 17:23:16.328435] [0x00007f15f03d6780] [error] [1;31This is an error log.

如何正确地将彩色日志输出添加到 boost::log?

最佳答案

使用 Boost.Log 自定义输出的正确方法是使用 formatters .要设置格式化程序,您必须按照所述设置一个接收器 here , 但您可以继续使用 BOOST_LOG_TRIVIAL 宏来生成日志记录。

格式化程序的好处是您可以访问格式化程序中的日志记录属性,例如严重性级别。例如,您可以使用严重级别来选择控制台上格式化日志记录的颜色。

void coloring_formatter(
logging::record_view const& rec, logging::formatting_ostream& strm)
{
auto severity = rec[logging::trivial::severity];
if (severity)
{
// Set the color
switch (severity.get())
{
case logging::trivial::severity_level::info:
strm << "\033[32m";
break;
case logging::trivial::severity_level::warning:
strm << "\033[33m";
break;
case logging::trivial::severity_level::error:
case logging::trivial::severity_level::fatal:
strm << "\033[31m";
break;
default:
break;
}
}

// Format the message here...
strm << rec[logging::expressions::smessage];

if (severity)
{
// Restore the default color
strm << "\033[0m";
}
}

sink->set_formatter(&coloring_formatter);

关于c++ - 如何将颜色编码添加到 boost::log 控制台输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38309479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com