在搜索了感觉太长的东西之后,我决定在 stackoverflow 上问这个简单的问题:如何为 log4cplus (1.1.2) 创建自定义布局?最接近的相关问题是如何在 log4cplus 中添加自定义过滤器?作者将新类直接添加到 log4cplus 目录中(或使用 log4cplus 命名空间?)。我没有这个选项,因为 log4plus 头文件和库是独立安装的(并且简单地将命名空间设置为 log4cplus 也不起作用。
我尝试的是从 log4cplus::PatternLayout 继承的最小示例:
namespace myNameSpace {
class LOG4CPLUS_EXPORT MyPatternLayout: public ::log4cplus::PatternLayout {
public:
MyPatternLayout(const log4cplus::tstring& pattern);
MyPatternLayout(const log4cplus::helpers::Properties& properties);
~MyPatternLayout();
private:
// Disallow copying of instances of this class
MyPatternLayout(const MyPatternLayout&);
MyPatternLayout& operator=(const MyPatternLayout&);
};
}
我希望 LOG4CPLUS_EXPORT 负责将我的类注册到 log4cplus 框架,以便我可以在配置文件中使用它。但是,添加
log4cplus.appender.STDOUT.layout=myNameSpace::MyPatternLayout
导致错误:
log4cplus:ERROR Cannot find LayoutFactory: "myNameSpace::MyPatternLayout"
那么如何注册一个自定义的 Layout/Appender 呢?