Я хочу изменить этот класс регистратора, который в настоящее время позволяет мне входить в файл и на консоль.(https://objectcomputing.com/resources/publications/sett/may-2016-boostlog-library) Однако в моей программе есть несколько циклов, которые последовательно выводят одно и то же сообщение об ошибке. Я хотел бы использовать фильтр повышения или что-либо еще, совместимое с журналом повышения, чтобы объединить эти дубликаты в одно.
Я попытался изменить свою программу, чтобы отследить эти дубликаты сообщений и выводить их в логгер, только если он не является непосредственным дубликатом, но в настоящее время он ограничен определенным циклом - мне было интересно, смогу ли я контролировать это поведение в приемнике.
Вот как сообщения передаются в регистратор:
#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
#define LOG_LOG_LOCATION(LOGGER, LEVEL, ARG)
BOOST_LOG_SEV(LOGGER, boost::log::trivial::LEVEL)
<< boost::log::add_value("Line", __LINE__)
<< boost::log::add_value("File", __FILENAME__)
<< boost::log::add_value("Function", __FUNCTION__) << ARG;
#define LOG_INFO(ARG) LOG_LOG_LOCATION(sysLogger::get(), info, ARG);
...
LOG_INFO("Log Start");
Мой первый шаг - отключить автоматическую очистку, так как мне нужно посмотреть, какие сообщения включены.буфер для идентификации дубликатов. После этого я должен проверить буфер, чтобы увидеть, содержало ли предыдущее сообщение журнала то же самое сообщение, и затем полностью отфильтровать их. Как мне получить доступ к этому буферу и как настроить фильтр на полное игнорирование чего-либо?Я даже использую фильтрышляпа имеет значение)?