gpt4 book ai didi

boost - 在 Boost Log 中,如何使用格式字符串格式化自定义严重性级别?

转载 作者:行者123 更新时间:2023-12-04 12:58:57 26 4
gpt4 key购买 nike

我在我的 C++ 程序中使用 boost log,并且我有一个自定义 severity_logger< severity_level >使用我定义的severity_level 枚举。然后我用格式字符串 "%TimeStamp% [%ThreadID%] %Severity% %Module% - %Message%" 创建我的日志接收器但它没有显示我有 %Severity% 的严重程度但在那个位置只是空白。例如,2013-07-29 10:31 [0xDEADBEEF] my.Module - Hello World .我需要在我的格式字符串中做什么才能使其显示严重性级别?

这是我的代码的一部分:

#define NUM_SEVERITY_LEVELS 6
enum severity_level
{
// These are deliberately the same levels that log4j uses
trace = 0,
debug = 1,
info = 2,
warning = 3,
error = 4,
fatal = 5
};

typedef src::severity_logger< severity_level > logger_t;

const char* severity_level_str[NUM_SEVERITY_LEVELS] = {
"TRACE",
"DEBUG",
"INFO",
"WARNING",
"ERROR",
"FATAL"
};

template< typename CharT, typename TraitsT >
std::basic_ostream< CharT, TraitsT >&
operator<< (
std::basic_ostream< CharT, TraitsT >& strm,
severity_level lvl
)
{
const char* str = severity_level_str[lvl];
if (lvl < NUM_SEVERITY_LEVELS && lvl >= 0)
strm << str;
else
strm << static_cast< int >(lvl);
return strm;
}

#define FORMAT_STRING "%TimeStamp% [%ThreadID%] %Severity% %Module% - %Message%"

boost::shared_ptr< sinks::synchronous_sink< sinks::text_file_backend > >
LOG_CREATE_SINK(const std::string& strLogFilename, bool fAutoFlush)
{
return logging::add_file_log(
keywords::file_name = strLogFilename,
keywords::open_mode = (std::ios_base::app | std::ios_base::out) & ~std::ios_base::in,
keywords::auto_flush = fAutoFlush,
keywords::format = FORMAT_STRING );
}

最佳答案

你应该添加

boost::log::register_simple_formatter_factory< severity_level, char >("Severity");

在调用 LOG_CREATE_SINK 方法之前。像这样:
int main(int argc, char* argv[])
{
boost::log::register_simple_formatter_factory< severity_level, char >("Severity");
LOG_CREATE_SINK("log_file.txt", true);
logger_t logger;
BOOST_LOG_SEV(logger, trace)
<< "text message";
return 0;
}

结果:
[] TRACE  - text message

关于boost - 在 Boost Log 中,如何使用格式字符串格式化自定义严重性级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17930553/

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