Boost日志时区
Boost Log Time Zone
我一直在学习Boost日志库
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, Test App Started.
但我希望
1 [2015-08-18 21:27:16.860724-08.00] main.cpp#11, Test App Started.
解释如下:
http://www.boost.org/doc/libs/develop/libs/log/doc/html/log/detailed/expressions.html log.detailed.expressions.formatters
这是我一直在尝试的代码,还有一些注释掉的行,我也尝试过,但没有运气:
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_
);
}
有什么建议我可能做错了吗?
utc_clock
和local_clock
都产生类型为boost::posix_time::ptime
的值,该值不包含时区信息。时钟之间的差异是ptime
表示的时间-根据机器上设置的时区,是UTC时间还是本地时间。格式化程序不使用%Q
和%q
,并将它们替换为空字符串。
时区存在于boost::local_time::local_date_time
类型中,%Q
和%q
占位符将为其工作。库没有产生local_date_time
的时钟属性,因此您必须自己编写一个。
相关文章:
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- Log4cpp:以UTC/GMT时区打印日期
- std::strftime 在 Windows 中使用 GMTIME 将时区 UTC 显示为 UTC+1
- 是否可以配置提升日志刷新?
- 跟踪日志中的T.11803()是什么意思?
- 以线程安全的方式转换 C/C++ 中时区名称字符串的时区偏移量
- 加快在C++中读取/处理日志文件的速度
- 如何将消息时间戳写入日志文件?
- 分析包含 NMEA 句子的日志文件C++
- 如何修复输出日志中的"EnableInput can only be specified on a Pawn for its Controller"错误
- 如何实现具有多个平台__FILE__和__LINE__信息的 C/C++ 可变参数日志记录宏?
- Log4net,将日志消息从 c++ dll 发送到 c# 应用程序?
- 返回ERROR_INVALID_PARAMETER的事件日志函数
- C++日期库因时区而失败
- 为什么系统日志有两个不同的函数声明?
- C++:获取时区偏差
- 从更改日志获取最新的 USN 数据
- 如何从日志文件中抓取状态代码?(在 C++ 中)
- 未创建日志文件
- Boost日志时区