Все работает, пока вы не добавите фильтр:
Filter="%Severity% > 3"
Немного погуглив (через Файлы конфигурации Boost.Log например.) Я нашел:
Как настроить severity_logger с помощью init_from_settings (), чтобы получить
Пользовательские уровни серьезности в журнале?
Вы должны зарегистрировать любые пользовательские типы значений атрибутов с
библиотека, чтобы иметь возможность использовать ее с фильтрами и анализаторами формата.
Это включает ваш уровень серьезности enum.
Добавьте это как:
logging::register_simple_filter_factory<logging::trivial::severity_level>("Severity");
Теперь исправьте выражение фильтра, чтобы использовать текстовое представление:
Filter="%Severity% > debug"
Аналогичным образом необходимо добавить атрибут TimeStamp
в ядро :
logging::core::get()->add_global_attribute("TimeStamp", logging::attributes::local_clock());
Теперь все работает:
#include <fstream>
#include <iostream>
#include <boost/log/attributes.hpp>
#include <boost/log/core.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/from_settings.hpp>
#include <boost/log/utility/setup/from_stream.hpp>
#include <boost/log/utility/setup/settings.hpp>
#include <boost/regex.hpp>
namespace logging = boost::log;
namespace keywords = boost::log::keywords;
#define BOOST_LOG_DYN_LINK 1
int main(int, char *[]) {
std::ifstream file("settings.ini");
logging::core::get()->add_global_attribute("TimeStamp", logging::attributes::local_clock());
logging::register_simple_filter_factory<logging::trivial::severity_level>("Severity");
logging::init_from_stream(file);
BOOST_LOG_TRIVIAL(trace) << "This is a trace severity message";
BOOST_LOG_TRIVIAL(debug) << "This is a debug severity message";
BOOST_LOG_TRIVIAL(info) << "This is an informational severity message";
BOOST_LOG_TRIVIAL(warning) << "This is a warning severity message";
BOOST_LOG_TRIVIAL(error) << "This is an error severity message";
BOOST_LOG_TRIVIAL(fatal) << "and this is a fatal severity message";
}
Который пишет в MyApp.log:
<2018-09-01 00:36:11.972436> - This is an informational severity message
<2018-09-01 00:36:11.972712> - This is a warning severity message
<2018-09-01 00:36:11.972735> - This is an error severity message
<2018-09-01 00:36:11.972747> - and this is a fatal severity message
Добавлено Демо Live On Coliru