Log4cplus:在gcc 4.8.5上的过滤器中集成正则表达式

Log4cplus具有 spi::StringMatchFilter 过滤器,可以将字符串或子字符串简单地匹配到日志消息(事件消息) .

我有gcc版本4.8.5,我想要做的是添加Log4cplus使用正则表达式过滤日志消息的能力,而不仅仅是一个简单的子字符串(简单的strstr搜索) .

我尝试过使用std :: regex和std :: tr1 :: regex libs,但遗憾的是它们的功能并没有完全在gcc 4.8编译器上实现 .

我很乐意得到一个方向或想法如何实现我的目标? (我不能升级我的gcc,也不能使用boost libs) .

我知道一个选项是使用PCRE lib通过使用此lib编译Log4cplus Makefile并在Log4cplus Filter.cxx src代码中添加正则表达式函数,但我不知道如何修改Log4cplus Makefile以链接到PCRE lib(在何处以及如何添加PCRE lib链接) .

我会很感激任何建议 .

回答(1)

3 years ago

我认为这个问题有点过于宽泛 .

您无需修改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);