Как мне установить фильтр, чтобы раздавить последовательные дубликаты бустинга? - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу изменить этот класс регистратора, который в настоящее время позволяет мне входить в файл и на консоль.(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");

Мой первый шаг - отключить автоматическую очистку, так как мне нужно посмотреть, какие сообщения включены.буфер для идентификации дубликатов. После этого я должен проверить буфер, чтобы увидеть, содержало ли предыдущее сообщение журнала то же самое сообщение, и затем полностью отфильтровать их. Как мне получить доступ к этому буферу и как настроить фильтр на полное игнорирование чего-либо?Я даже использую фильтрышляпа имеет значение)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...