转发升级日志文件丢弃元信息

时间:2013-10-31 16:40:40

标签: c++ logging boost

我正在使用这样的boost-log库:

BOOST_LOG_TRIVIAL(info) << "My sample output";

我希望,我不需要改变它。

输出看起来像这样

[2013-10-31 17:19:19.044701] [0x3f1e6740] [info]    My sample output

问题:

我正在尝试将其从stdout转发到文件。

当我尝试这样的事情时

boost::log::add_file_log("sample.log", boost::log::keywords::auto_flush = true);
boost::log::add_common_attributes();

完全相同BOOST_LOG_TRIVIAL的输出看起来像

My sample output

我该怎样做才能获得我心爱的元信息?

1 个答案:

答案 0 :(得分:0)

在花了很多时间尝试之后,我自己想出来了。

我只是添加了

boost::log::register_simple_formatter_factory< boost::log::trivial::severity_level, char >("Severity");
boost::log::add_common_attributes();
boost::log::add_file_log("sample.log",
                         boost::log::keywords::auto_flush = true,
                         boost::log::keywords::format = "[%TimeStamp%] [%ProcessID%] [%ThreadID%] [%Severity%]: %Message%" );

作为第一线之一。这会将日志写入sample.log

关键似乎是add_file_log会覆盖BOOST_LOG_TRIVIAL的样式。添加我自己的boost::log::keyword::format解决了这个问题。