вот мой код:
#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");
но я пробовал разные местоположения файлов, и он нигде не пишет
Проблема в том, что у вашего регистратора нет атрибута серьезности. Он не производит значения серьезности в записях журнала, и поэтому фильтр, который вы устанавливаете, всегда отклоняет записи.
В примере из документов, которые вы связали, вы можете видеть, что severity_logger
а также BOOST_LOG_SEV
используются для регистрации (см. документы Вот). severity_logger
logger имеет атрибут серьезности типа, указанного в аргументе шаблона, и BOOST_LOG_SEV
макрос предоставляет значение серьезности для каждой записи журнала. Обратите внимание, что тип значения атрибута (уровень серьезности) должен соответствовать фильтру и средству форматирования, если они установлены. logging::trivial::severity
Ключевое слово в установленном фильтре подразумевает, что уровень серьезности должен иметь тип boost::log::trivial::severity_level
,
Путь к файлу "F:\sample.log"
может быть эквивалентно "F:sample.log"
когда о побеге позаботятся. (это определяется реализацией, согласно N3337 2.14.3 Символьные литералы)
:
не может использоваться в именах файлов в Windows.
Ты имел ввиду "F:\\sample.log"
?