【发布时间】:2015-08-18 22:25:26
【问题描述】:
我一直在学习 Boost Log 库
http://www.boost.org/doc/libs/develop/libs/log/doc/html/index.html
但我一直无法弄清楚如何显示用户的时区。有一个 %q 和 %Q 格式选项看起来很有希望,但似乎不起作用(我使用的是 MSVC++ 2013)。使用这种格式“%Y-%m-%d %H:%M:%S.%f%Q”,我得到以下输出:
1 [2015-08-18 21:27:16.860724] main.cpp#11,测试应用已启动。
但我早就料到了
1 [2015-08-18 21:27:16.860724-08.00] main.cpp#11,测试应用已启动。
如中所述:
这是我一直在尝试的代码和一些我也尝试过但没有成功的注释行:
void Log::init() const
{
boost::log::core::get()->add_global_attribute("TimeStamp", boost::log::attributes::utc_clock());
// boost::log::core::get()->add_global_attribute("TimeStamp", boost::log::attributes::local_clock());
boost::log::register_simple_formatter_factory<Severity, char>("Severity");
// boost::log::register_formatter_factory("TimeStamp", boost::make_shared<timestamp_formatter_factory>());
boost::log::add_common_attributes();
boost::log::add_file_log
(
boost::log::keywords::file_name = "appname_%N.log",
boost::log::keywords::rotation_size = 10 * 1024 * 1024,
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(0, 0, 0),
boost::log::keywords::format =
boost::log::expressions::stream
<< boost::log::expressions::attr<unsigned>("LineID") << " "
<< "[" << boost::log::expressions::format_date_time<boost::posix_time::ptime>("TimeStamp", "%Y-%m-%d %H:%M:%S.%f%Q"<< "]" << " "
<< "<" << boost::log::expressions::attr<Severity>("Severity") << _NSTR(">") << _NSTR(" ")
<< boost::log::expressions::smessage
// "%LineID% [%TimeStamp(format=\"%Y-%m-%d %H:%M:%S.%f%Q\")%] <%Severity%>: %%Message%"
);
const auto severity = boost::log::expressions::attr<Severity>("Severity");
boost::log::core::get()->set_filter
(
severity >= severityThreshold_
);
}
关于我可能做错的任何建议?
【问题讨论】: