Boost log не записывает в файл, как?

вот мой код:

#include <boost/log/trivial.hpp>
#include <boost/move/utility.hpp>
#include <boost/log/sources/logger.hpp>
#include <boost/log/sources/record_ostream.hpp>
#include <boost/log/sources/global_logger_storage.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>

namespace logging = boost::log;
namespace src = boost::log::sources;
namespace keywords = boost::log::keywords;

BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT(my_logger, src::logger_mt)

void Foo::Some()
{
std::cout << "TEST";

src::logger_mt& lg = my_logger::get();

logging::add_file_log("F:\\sample.log");
//logging::core::get()->set_filter
//  (
//  logging::trivial::severity >= logging::trivial::info
//  );
logging::add_common_attributes();

BOOST_LOG(lg) << "Greetings from the global logger!";

он взят из учебника по бусту, но не записывает в файл и не показывает никаких сообщений об ошибках

учебник здесь: http://www.boost.org/doc/libs/master/libs/log/example/doc/tutorial_file.cpp

Что я делаю неправильно?

работает без строки: logging::add_file_log("F:\\sample.log"); но я пробовал разные местоположения файлов, и он нигде не пишет

0

Решение

Проблема в том, что у вашего регистратора нет атрибута серьезности. Он не производит значения серьезности в записях журнала, и поэтому фильтр, который вы устанавливаете, всегда отклоняет записи.

В примере из документов, которые вы связали, вы можете видеть, что severity_logger а также BOOST_LOG_SEV используются для регистрации (см. документы Вот). severity_logger logger имеет атрибут серьезности типа, указанного в аргументе шаблона, и BOOST_LOG_SEV макрос предоставляет значение серьезности для каждой записи журнала. Обратите внимание, что тип значения атрибута (уровень серьезности) должен соответствовать фильтру и средству форматирования, если они установлены. logging::trivial::severity Ключевое слово в установленном фильтре подразумевает, что уровень серьезности должен иметь тип boost::log::trivial::severity_level,

4

Другие решения

Путь к файлу "F:\sample.log" может быть эквивалентно "F:sample.log" когда о побеге позаботятся. (это определяется реализацией, согласно N3337 2.14.3 Символьные литералы)
: не может использоваться в именах файлов в Windows.
Ты имел ввиду "F:\\sample.log"?

3

По вопросам рекламы [email protected]