Я пишу приложение для ведения журнала, используя Boost, где мне нужно записать два разных журнала в два разных файла. Ex. Мой журнал производительности перейдет в файл Performance.log, а журнал приложения - в файл application.log.
Создано два file_sink_ptr, который указывает на два разных файла. Добавлен указатель приемника на ядро.
Используя индивидуальный приемник, я регистрирую каждый тип журналов.
Я вижу два файла, созданные с одинаковыми журналами.
Мне нужно иметь журналы приложений в file1 и журнал производительности в file2. Но здесь никакой сегрегации не происходит. Журналы приложений и производительности собираются в обоих файлах.
Не могли бы вы помочь с этим.
typedef boost::log::sinks::asynchronous_sink< boost::log::sinks::text_file_backend > file_sink;
typedef boost::shared_ptr< file_sink > file_sink_ptr;
file_sink_ptr sinkptr1 = boost::make_shared<file_sink >(
boost::log::keywords::file_name = fileName
boost::log::keywords::target = dirName,
boost::log::keywords::open_mode = std::ios_base::out | std::ios_base::app,
boost::log::keywords::auto_flush = true);
sinkptr1->locked_backend()->set_file_collector(boost::log::sinks::file::make_collector(
boost::log::keywords::target = dirName,
boost::log::keywords::max_size = dirSize));
--------------2nd file
file_sink_ptr sinkptr2 = boost::make_shared<file_sink >(
boost::log::keywords::file_name = fileName2
boost::log::keywords::target = dirName,
boost::log::keywords::open_mode = std::ios_base::out | std::ios_base::app,
boost::log::keywords::auto_flush = true);
sinkptr2->locked_backend()->set_file_collector(boost::log::sinks::file::make_collector(
boost::log::keywords::target = dirName,
boost::log::keywords::max_size = dirSize));
sinkptr1->locked_backend()->scan_for_files();
sinkptr2->locked_backend()->auto_flush();
boost::log::core::get()->add_sink(sinkptr1);
boost::log::core::get()->add_sink(sinkptr2);
LogData* ptr1 = new LogData();
ptr1->sinkPtr = sinkptr1;
LogData* ptr2 = new LogData();
ptr2->sinkPtr = sinkptr2;
----------------------------------------------
struct LogData
{
boost::log::sources::logger logger;
file_sink_ptr sinkPtr;
};
BOOST_LOG(ptr1 ->logger) << StringTextMessage1;
BOOST_LOG(ptr2 ->logger) << StringTextMessage2;