c++ - 将 Log4j CompositeTriggeringPolicy 功能与 log4CXX 结合使用

标签 c++ log4cxx

我想在一个 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);

在进程重启后继续记录到适当的日志 block ,并且

// 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);

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

希望能在正确的时间提供帮助。

关于c++ - 将 Log4j CompositeTriggeringPolicy 功能与 log4CXX 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178588/

相关文章:

c++ - Pythia 的 bbbar 对的质量不变性

c++ - 为什么忽略返回类型 'cv'?

c++ - C++ 中的成员指针运算符 ->* 和 .* 是什么?

log4j - 如何使用Log4cxx或log4j记录进程ID

c++ - 在 Visual Studio 2010 中使用 log4cxx。应用程序初始化错误

C++ 程序在命令行上工作但在 Xcode 上失败

c++ - 字符串中字符的最大频率

c++ - 在 log4cxx 中使用 utf-8 字符

c++ - 如何设置 log4cxx 控制台输出的颜色?

c# - log4net 模式为没有完整路径的文件名提供了什么