本文介绍了升压日志severity_logger init_from_stream的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用升压1.54.0。
下面你可以找到,说明我的问题最少的例子。

我使用boost日志severity_logger。
我想从一个流配置我汇。
(在下面的例子中我使用了一个字符串流。
在我的实际应用数据流来自一个文件。)
我想用%严重性%输出或过滤的目的。

我的问题是:如果我用它作为在下面的例子中给出的%严重性%为空

如预期

%,另一LineID%和%消息%充满。
如果我成立了一个水槽作为outcommented行给出,它按预期工作。

任何想法?

 的#include<升压/日志/来源/ severity_logger.hpp>
#包括LT&;升压/日志/来源/ record_ostream.hpp>
#包括LT&;升压/日志/工具/设置/ common_attributes.hpp>
#包括LT&;升压/日志/工具/设置/ from_stream.hpp>
#包括LT&;升压/日志/工具/设置/ console.hpp>
#包括LT&;升压/日志/ EX pressions.hpp>枚举SeverityLevel {痕迹,致命};INT主(INT ARGC,CHAR *的argv [])
{
    提高::登录:: add_common_attributes();
    / *
    结构severity_tag;
    提高::登录:: add_console_log(的std ::堵塞,
        提高::登录::关键词:格式=(
            提高::登录::前pressions ::流
                <<提高::登录::前pressions :: ATTR< unsigned int类型>(另一LineID)
                << :其中, <<提高::登录::前pressions :: ATTR< SeverityLevel,severity_tag>(严重性)
                << >中与所述;&下;提高::登录::前pressions :: smessage)
    ); * /    的std :: stringstream的S;
    小号所述&;&下; [Sinks.MySink]<<的std :: ENDL;
    小号所述&;&下; 目标=控制台<<的std :: ENDL;
    小号所述&;&下; 格式= \\%另一LineID%:其中,%严重性%GT; - %消息%\\<<的std :: ENDL;
    提高::登录:: init_from_stream(S);    提高::登录::来源:: severity_logger< SeverityLevel> LG;
    BOOST_LOG_SEV(LG,跟踪)LT;< 这是一个跟踪消息;
    BOOST_LOG_SEV(LG,致命)LT;< 这是一个致命的消息;
    返回0;
}


解决方案

您是对的。这是一个已知的bug,并固定在当前开发版本。

下面是错误报告:https://svn.boost.org/trac/boost/ticket/8840

为了使这个答案不那么依赖这里的链接是它是在报告内解决方式:

logging::register_simple_formatter_factory<ESeverityLevel, char>("Severity");
logging::register_simple_filter_factory<ESeverityLevel, char>("Severity"); 

这篇关于升压日志severity_logger init_from_stream的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 08:11