Log4cplus:在 gcc 4.8.5 的过滤器中集成正则表达式
Log4cplus: integrate regular expression in filters on gcc 4.8.5
Log4cplus 具有 spi::StringMatchFilter 过滤器,可以实现字符串或子字符串与日志消息(事件消息)的简单匹配。
我有 gcc 4.8.5 版,我想做的是在 Log4cplus 中添加使用正则表达式过滤日志消息的功能,而不仅仅是一个简单的子字符串(简单的 strstr 搜索)。
我试过使用 std::regex 和 std::tr1::regex 库,但不幸的是它们的功能在 gcc 4.8 编译器上没有完全实现。
我很乐意得到有关如何实现目标的方向或想法? (我无法升级我的 gcc,也无法使用 boost 库)。
我知道一种选择是使用 PCRE 库,通过使用此库编译 Log4cplus Makefile 并在 Log4cplus Filter.cxx src 代码中添加正则表达式函数,但我不确定如何修改将 Log4cplus Makefile link 添加到 PCRE 库(在哪里以及如何添加 PCRE 库 link)。
如有任何建议,我将不胜感激。
我觉得这个问题有点太宽泛了。
您不需要修改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);
Log4cplus 具有 spi::StringMatchFilter 过滤器,可以实现字符串或子字符串与日志消息(事件消息)的简单匹配。
我有 gcc 4.8.5 版,我想做的是在 Log4cplus 中添加使用正则表达式过滤日志消息的功能,而不仅仅是一个简单的子字符串(简单的 strstr 搜索)。
我试过使用 std::regex 和 std::tr1::regex 库,但不幸的是它们的功能在 gcc 4.8 编译器上没有完全实现。
我很乐意得到有关如何实现目标的方向或想法? (我无法升级我的 gcc,也无法使用 boost 库)。
我知道一种选择是使用 PCRE 库,通过使用此库编译 Log4cplus Makefile 并在 Log4cplus Filter.cxx src 代码中添加正则表达式函数,但我不确定如何修改将 Log4cplus Makefile link 添加到 PCRE 库(在哪里以及如何添加 PCRE 库 link)。
如有任何建议,我将不胜感激。
我觉得这个问题有点太宽泛了。
您不需要修改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);