如何为log4cplus创建自定义布局
How do I create a custom Layout for log4cplus
在搜索了感觉太长的内容后,我决定在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"
那么我该如何注册自定义布局/附件呢?
在尝试了许多事情之后,它归结为一个简单的条目,必须放在log4cplus::initialize();
之后和log4cplus::PropertyConfigurator::doConfigure("<path to config file");
之前。如果你想在log4cplus
命名空间中添加新的布局,你可以简单地
//example1
log4cplus::initialize();
// register our stuff
log4cplus::spi::LayoutFactoryRegistry& reg = log4cplus::spi::getLayoutFactoryRegistry();
LOG4CPLUS_REG_LAYOUT(reg, MyPatternLayout);
log4cplus::PropertyConfigurator::doConfigure(Logger::mConfigFile);
或者,如果您想使用自己的名称空间
//example2
log4cplus::initialize();
// register our stuff
log4cplus::spi::LayoutFactoryRegistry& reg = log4cplus::spi::getLayoutFactoryRegistry();
LOG4CPLUS_REG_PRODUCT (reg, "myNamespace::", MyPatternLayout, myNamespace::, log4cplus::spi::LayoutFactory);
log4cplus::PropertyConfigurator::doConfigure(Logger::mConfigFile);
然后,您可以将配置中的布局用作
log4cplus.appender.STDOUT.layout = log4cplus::MyPatternLayout #example 1
或
log4cplus.appender.STDOUT.layout = myNamespace::MyPatternLayout #example 2
很简单,对吧?我希望log4cplus有一个更接近.log 4j one 的文档
相关文章:
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- C++自定义比较函数
- 如何比较自定义类的std::变体
- std::设置自定义比较器
- 如何正确实现和访问运算符的各种自定义枚举器
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- Qt自定义QPush按钮未显示在布局上
- Qt:自定义小部件的多个布局
- QT设计器中的自定义小部件在框架中具有预先存在的布局
- 重叠小部件的 QT 自定义布局示例无法编译
- 动态地将自定义 qt 小部件添加到框架中,而无需每次都更改布局
- Boost.Proto:具有自定义终端类的EDSL的常规类布局
- 将自定义小部件动态添加到烘焙布局中
- 如何为log4cplus创建自定义布局
- 如何布局自定义二进制文件格式
- 在布局中显示自定义小部件
- 在QT中,如何在自定义小部件中定义布局的几何形状
- 自定义布局在Qt设计器
- 向布局中添加小部件仅在自定义类的构造函数中有效