我有一个使用boost :: log version 2的小项目(来自Boost 1.55)。我想登录到一个文件,所以我这样初始化它:
void initializeLogging(boost::log::trivial::severity_level level)
{
logging::add_common_attributes();
logging::add_file_log(
keywords::file_name = "sample.%02N.log",
keywords::open_mode = std::ios::app,
keywords::format = "[%TimeStamp%] %Message%"
);
logging::core::get()->set_filter
(
logging::trivial::severity >= level
);
boost::log::sources::severity_logger< boost::log::trivial::severity_level > lg;
BOOST_LOG_SEV(lg, boost::log::trivial::error) << "INSIDE An error severity message";
}
我在文件sample.00.log中看到了行INSIDE An error severity message
。
但是当我打电话给doStuff
之后,initializeLogging
没有记录任何内容。
void doStuff()
{
boost::log::sources::severity_logger< boost::log::trivial::severity_level > lg;
BOOST_LOG_SEV(lg, boost::log::trivial::error) << "An error severity message";
}
此代码在Windows程序中,没有控制台可以查看。 Windows调试日志中没有任何内容。
如您所见,doStuff
具有与第一个函数完全相同的代码。我需要做些什么来使我的日志记录设置成为永久性的吗?
答案 0 :(得分:1)
boost::log::sources::severity_logger< boost::log::trivial::severity_level >
是单身吗?
你为doStuff()创建了另一个局部变量lg
,如果它不是单例,它就不会有初始化。
初始化:
logging::add_common_attributes();
logging::add_file_log(
keywords::file_name = "sample.%02N.log",
keywords::open_mode = std::ios::app,
keywords::format = "[%TimeStamp%] %Message%"
);
logging::core::get()->set_filter
(
logging::trivial::severity >= level
);