Журнал ускорения severity_logger init_from_stream

Я использую Boost 1.54.0. Ниже вы можете найти минимальный пример, который иллюстрирует мою проблему.

Я использую severity_logger журнала форсирования. Я хочу настроить мои приемники из потока. (В следующем примере я использую поток строк. В моем реальном приложении поток исходит из файла.) Я хочу использовать% Severity% для целей вывода или фильтрации.

мойпроблема является: Если я использую его, как указано в примере ниже,% Severity% пуст.

% LineID% и% Message% заполнены, как и ожидалось. Если я настрою приемник, как указано в закомментированных строках, он будет работать как положено.

Есть идеи?

#include <boost/log/sources/severity_logger.hpp>
#include <boost/log/sources/record_ostream.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/from_stream.hpp>
#include <boost/log/utility/setup/console.hpp>
#include <boost/log/expressions.hpp>

enum SeverityLevel { trace, fatal };

int main (int argc, char *argv[])
{
    boost::log::add_common_attributes();
    /*
    struct severity_tag;
    boost::log::add_console_log(std::clog,
        boost::log::keywords::format = (
            boost::log::expressions::stream
                << boost::log::expressions::attr< unsigned int >("LineID")
                << ": <" << boost::log::expressions::attr<SeverityLevel, severity_tag >("Severity")
                << "> " << boost::log::expressions::smessage)
    ); */

    std::stringstream s;
    s << "[Sinks.MySink]" << std::endl;
    s << "Destination=Console" << std::endl;
    s << "Format=\"%LineID%: <%Severity%> - %Message%\"" << std::endl;
    boost::log::init_from_stream(s);

    boost::log::sources::severity_logger<SeverityLevel> lg;
    BOOST_LOG_SEV(lg, trace) << "This is a trace message";
    BOOST_LOG_SEV(lg, fatal) << "This is a fatal message";
    return 0;
}

Ответы на вопрос(1)

Ваш ответ на вопрос