使用Log4j的CompositeTriggeringPolicy特性与log4CXX

Using Log4j CompositeTriggeringPolicy feature with log4CXX

本文关键字:log4CXX CompositeTriggeringPolicy Log4j 使用      更新时间:2023-10-16

我想在一个appender中结合滚动时间和滚动大小,似乎在log4cxx中没有复合滚动,我是对的吗?

没有。实际上,在log4j中也没有实现这样的组合策略,因此没有将其转移到log4cxx。

我曾经有一个编写这种混合策略滚动文件附加程序的任务(不过是在log4j中)。我通过重写FileAppender,特别是 方法来做到这一点。
// log4j
void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize);
// log4cxx
void setFile(const LogString& filename, bool append1, bool bufferedIO1, size_t bufferSize1, Pool& p);

在进程重启后继续记录到适当的日志块,以及

// log4j
void subAppend(LoggingEvent event);
// log4cxx
virtual void append(const spi::LoggingEventPtr& event, log4cxx::helpers::Pool& p); 

在每个日志条目之后测试滚动的条件是否为真。

在log4j/cxx中实现自己的appender的一个真正强大的特性是,您可以在log4j.properties中定义它的属性,并由库设置它们。在Java中,由于反射,您可以免费获得它;在log4cxx中,您只需要编写

void setOption(const LogString& option, const LogString& value);

方法,其中迭代选项字符串并执行必要的初始化操作。

希望能在适当的时候帮到你。