Events Boost事件记录器

Events Boost事件记录器,events,logging,boost,Events,Logging,Boost,在此页面中,有用于初始化boost windows事件后端的示例代码, 但当我运行它时,它会在第一行给出内存错误 void init_logging() { // Create an event log sink boost::shared_ptr< sink_t > sink(new sink_t()); sink->set_formatter ( expr::format("%1%: [%2%] - %3%")

在此页面中,有用于初始化boost windows事件后端的示例代码, 但当我运行它时,它会在第一行给出内存错误

void init_logging()
{
    // Create an event log sink
    boost::shared_ptr< sink_t > sink(new sink_t());

    sink->set_formatter
    (
        expr::format("%1%: [%2%] - %3%")
            % expr::attr< unsigned int >("LineID")
            % expr::attr< boost::posix_time::ptime >("TimeStamp")
            % expr::smessage
    );

    // We'll have to map our custom levels to the event log event types
    sinks::event_log::custom_event_type_mapping< severity_level > mapping("Severity");
    mapping[normal] = sinks::event_log::info;
    mapping[warning] = sinks::event_log::warning;
    mapping[error] = sinks::event_log::error;

    sink->locked_backend()->set_event_type_mapper(mapping);

    // Add the sink to the core
    logging::core::get()->add_sink(sink);
}
void init_logging()
{
//创建事件日志接收器
boost::shared_ptrsink(新sink_t());
接收器->设置格式化程序
(
expr::format(“%1%:[%2%]-%3%”)
%expr::attr(“LineID”)
%expr::attr(“时间戳”)
%表达式::smessage
);
//我们必须将自定义级别映射到事件日志事件类型
接收器::事件日志::自定义事件类型映射<严重性级别>映射(“严重性”);
映射[正常]=接收器::事件日志::信息;
映射[警告]=接收器::事件日志::警告;
映射[error]=sinks::event_log::error;
sink->locked_backend()->set_event_type_mapper(映射);
//将水槽添加到核心
logging::core::get()->add_sink(sink);
}
在这里,它无法创建接收器对象

boost::shared_ptr< sink_t > sink(new sink_t());
boost::shared_ptrsink(新sink_t());
知道问题是什么吗?我该如何解决

另外,如果您知道我可以使用boost事件日志了解的任何其他来源,请写信。

还没有答案

但我在Timo Geusch的博客中找到了一个解决方案

出现此问题的原因是应用程序需要访问HKEY\U LOCAL\U MACHINE\System\CurrentControlSet\Services\EventLog\中的注册表项必须存在(如果您不是管理员,则您没有创建注册表项的权限)运行应用程序的用户还需要能够读写应用程序