Ich habe einige Probleme mit Boost Event Logger. Wenn ich versuche, das Ereignisprotokoll mit BOOST_LOG_TRIVIAL
zu protokollieren, erhalte ich keine Schweregrade in der Ereignisanzeige. (Alles wird als Information angezeigt, aber nicht als Warnung, Fehler usw.) Die Boost-Bibliothek ist dynamisch mit der Anwendung verknüpft. Ich benutze 1.57 Version der Bibliothek.Boost Ereignisprotokoll zeigt Ereignisse nicht richtig an
Hier ist Screenshot. Jedes Ereignis sollte als Warnung angezeigt werden, tut dies aber nicht.
Hier ist mein init Code:
try
{
boost::log::add_common_attributes(); //edit
boost::shared_ptr<sink_t> sink(new sink_t
(
log_name = "test_app",
log_source = "test_app"
));
sink->set_formatter
(
expr::format("[%1%] - %2%")
% expr::attr<ptime>("TimeStamp")
% expr::smessage
);
sinks::event_log::custom_event_type_mapping<MessageSeverity> mapping("Severity");
mapping[MessageSeverity::error] = sinks::event_log::error;
mapping[MessageSeverity::warning] = sinks::event_log::warning;
mapping[MessageSeverity::info] = sinks::event_log::info;
sink->locked_backend()->set_event_type_mapper(mapping);
core::get()->add_sink(sink);
}
catch (const std::exception &e)
{
BOOST_LOG_TRIVIAL(fatal) << e.what();
}
Und hier ist, wie ich Ereignisse protokollieren
void Logger::log(MessageSeverity severity, const std::string & msg)
{
switch (severity)
{
case MessageSeverity::info:
BOOST_LOG_TRIVIAL(info) << msg;
break;
case MessageSeverity::warning:
BOOST_LOG_TRIVIAL(warning) << msg;
break;
case MessageSeverity::error:
BOOST_LOG_TRIVIAL(error) << msg;
break;
default:
break;
}
}
Es funktioniert, danke! – Cfanny