Log4cplus: интегрировать регулярные выражения в фильтры на gcc 4.8.5 - PullRequest
0 голосов
/ 09 декабря 2018

Log4cplus имеет фильтр spi :: StringMatchFilter , который позволяет просто сопоставить строку или подстроку с сообщением журнала (сообщением о событии).

У меня gcc версии 4.8.5 и что я хотел бы сделать, это добавить в Log4cplus возможность фильтрации сообщений журнала с использованием регулярных выражений, а не просто простой подстроки (простой поиск по strstr).

Я пытался использовать std:: regex и std :: tr1 :: regex libs, но, к сожалению, их функции не полностью реализованы в компиляторах gcc 4.8.

Я был бы рад получить направление или представление о том, как мне достичь своей цели?(Я не могу обновить свой gcc, ни использовать boost libs).

Я знаю, что один из вариантов - использовать библиотеку PCRE, скомпилировав Make-файл Log4cplus с этой библиотекой, и добавить функции регулярных выражений в Log4cplus Filter.cxx.код src, но я не уверен, как изменить Makefile Log4cplus для ссылки на библиотеку PCRE (где и как добавить ссылку на библиотеку PCRE).

Буду благодарен за любое предложение.

1 Ответ

0 голосов
/ 10 декабря 2018

Я думаю, что это слишком широкий вопрос.

Вам не нужно изменять сам log4cplus.Вы можете поместить фильтр в свой собственный код приложения и зарегистрировать фильтр в заводском реестре:

#include <log4cplus/spi/factory.h>

// Into main() or some other convenient place:

log4cplus::spi::FilterFactoryRegistry& filter_reg = log4cplus::spi::getFilterFactoryRegistry();

LOG4CPLUS_REG_PRODUCT (filter_reg, "your::ns::", YourFilterClassNameHereInYourNs, your::ns::, 
    log4cplus::spi::FilterFactory);
...