c++ - 无法理解如何在类中存储 log4cpp 记录器的实例
问题描述
这个问题可能会因为它过于简单而被否决 - 但我不确定我应该为这些类型的对象遵循的模式。
我想在一个类中存储一个 log4cpp 记录器的实例,所以我只需要实例化一次。在我看来,这将帮助我保持代码整洁。
想象一下,我有这样的课程:
#include <log4cpp/Category.hh>
#include <log4cpp/Appender.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/OstreamAppender.hh>
#include <log4cpp/Layout.hh>
#include <log4cpp/BasicLayout.hh>
#include <log4cpp/Priority.hh>
class ExampleClass {
private:
log4cpp::Category& logger;
public:
ExampleClass();
~ExampleClass();
}
通过实施:
ExampleClass::ExampleClass() {
log4cpp::Appender *appender1 = new log4cpp::OstreamAppender("console", &std::cout);
appender1->setLayout(new log4cpp::BasicLayout());
log4cpp::Appender *appender2 = new log4cpp::FileAppender("default", "output.log");
appender2->setLayout(new log4cpp::BasicLayout());
logger = log4cpp::Category::getRoot();
logger.setPriority(log4cpp::Priority::WARN);
logger.addAppender(appender1);
logger.addAppender(appender2);
}
根据文档(http://log4cpp.sourceforge.net/#simpleexample),该函数log4cpp::Category::getRoot()
返回一个log4cpp::Category&
. 所以很自然地我想存储这个(如上所示)。
不幸的是,这不起作用。我从我的 IDE 中收到以下错误:operator = is a private member of log4cpp::Category
. 现在我意识到我已经过头了。我很困惑,特别是考虑到类文档(http://log4cpp.sourceforge.net/api/classlog4cpp_1_1Category.html)似乎表明我在这里所做的是正确的。
我想我在这里搞砸了我对指针的理解(为什么我通过 & 传递地址而不是通过间接传递指针)。有人可以向我解释如何解决这个问题/我哪里出错了?
谢谢!
解决方案
推荐阅读
- typescript - 打字稿泛型:将键作为函数 arg 传递,将另一个 arg 推断为值
- flutter - Flutter - google_mobile_ads 是否可以使用此插件设置应用跟踪透明度?
- python - 根据字典的值将字典列表的值分配给数据帧,具体取决于数据帧的列值
- spring - 当 redirectAttributes.addFlashAttribute() 在 IFRAME 中运行时 Spring FlashMap 为空
- excel-formula - 想要给 Excel 数据添加评分
- numpy - 给定一个子(父子集)numpy数组,在父数组上找到它的索引?
- r - 在 R 中做广义多项式模型时遇到问题
- vue.js - 我可以不将 Vetur 添加到我的 Vue.js 3 应用程序中吗?
- javascript - 无法访问 EJS 模板中包含部分的对象
- python - 如何更改文本文件中的特定字符串?