【发布时间】:2016-04-11 19:25:51
【问题描述】:
在 syslog 后端有什么方法可以刷新()。我遇到了 boost syslog sink 的问题,在 6 条日志消息之后,第 7 条消息没有被记录到 syslog 中(停留在缓冲区中),直到调用新的日志消息。
我的系统日志实现:
typedef sinks::synchronous_sink< sinks::syslog_backend > sink_t;
boost::shared_ptr< sink_t > syslogSink(
new sink_t(
keywords::facility = sinks::syslog::local0,
keywords::use_impl = sinks::syslog::native
));
sinks::syslog::custom_severity_mapping< std::string > mapping("severityLevel");
mapping["debug"] = sinks::syslog::debug;
mapping["info"] = sinks::syslog::info;
mapping["notice"] = sinks::syslog::info;
mapping["warning"] = sinks::syslog::warning;
mapping["error"] = sinks::syslog::error;
mapping["critical"] = sinks::syslog::critical;
syslogSink->locked_backend()->set_severity_mapper(mapping);
syslogSink->locked_backend()->auto_flush(m_logAutoFlush);
logging::formatter formatter = CEFFormat();
syslogSink->set_formatter(formatter);
syslogSink->set_filter(expr::attr<std::string>("Channel") == "signatureID");
logging::core::get()->add_sink(syslogSink);
syslogSink->flush();
我尝试按照 http://www.boost.org/doc/libs/1_59_0/libs/log/doc/html/boost/log/sinks/synchronous_sink.html#idp54313520-bb 使用 flush() 方法
但它没有帮助,并且仍然没有通过停留在缓冲区中及时记录日志消息。
【问题讨论】: