2015-10-02 2 views
0

вот мой код:Boost журнал не пишет в файл, как?

#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

Это все ваш код? Пожалуйста, напишите [Минимальный, полный и проверенный пример] (https://stackoverflow.com/help/mcve). – robert

+0

@robert да, если вы переименуете Foo :: Некоторые на главную и добавьте закрывающую скобку ... ничего нет – Cynede

ответ

4

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

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

+0

спасибо, это было здесь, странно, что он только вызывал файл – Cynede

3

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

+0

спасибо, но это была моя опечатка, я пробовал с '\\\' и рабочий процесс тот же , Я тестировал только «sample.log» до и ничего не делал – Cynede

Смежные вопросы