问题描述:

使用单元测试测试log4cpp相关代码,退出是log4gcpp析构报错。 下面是个简单的log4cpp使用,标准输出和文件输出,运行功能都是可以的,但是析构时报错

#1 0x00007ffff7b9ab9c in log4cpp::LayoutAppender::~LayoutAppender() () from …/output/lib/liblog4cpp.so.5
#2 0x00007ffff7b9d8b8 in log4cpp::OstreamAppender::~OstreamAppender() () from …/output/lib/liblog4cpp.so.5

#include <iostream>
#include <log4cpp/Category.hh>
#include <log4cpp/OstreamAppender.hh>
#include <log4cpp/Priority.hh>
#include <log4cpp/PatternLayout.hh>
#include <log4cpp/RollingFileAppender.hh>using namespace std;int main(int argc, char const *argv[])
{log4cpp::OstreamAppender app("osAppender", &cout);log4cpp::PatternLayout *layout = new log4cpp::PatternLayout();layout->setConversionPattern("%d: %p %c : %m%n");app.setLayout(layout);log4cpp::RollingFileAppender* rollfileAppender = new log4cpp::RollingFileAppender("roAppender", "test.log", 1024, 4); rollfileAppender->setLayout(layout);log4cpp::Category &root = log4cpp::Category::getRoot();log4cpp::Category &infoCategory = root.getInstance(string(argv[0]));infoCategory.addAppender(app);infoCategory.addAppender(rollfileAppender);infoCategory.setPriority(log4cpp::Priority::INFO);infoCategory.info("system is running...");infoCategory.warn("system has got a warn...");infoCategory.error("system has got an error...");infoCategory.fatal("system has crashed....");log4cpp::Category::shutdown();return 0;
}

原因分析:

根据分析释放LayoutAppender时出错,根据应用,两个Appender使用了同一个LayoutAppender,修改每个appender使用独立的LayoutAppender,测试通过。总结下来还是自己使用的问题,踩了一个坑记录一下。


解决方案:

#include <iostream>
#include <log4cpp/Category.hh>
#include <log4cpp/OstreamAppender.hh>
#include <log4cpp/Priority.hh>
#include <log4cpp/PatternLayout.hh>
#include <log4cpp/RollingFileAppender.hh>using namespace std;int main(int argc, char const *argv[])
{log4cpp::OstreamAppender app("osAppender", &cout);log4cpp::PatternLayout *layout = new log4cpp::PatternLayout();layout->setConversionPattern("%d: %p %c : %m%n");app.setLayout(layout);log4cpp::PatternLayout *layout2 = new log4cpp::PatternLayout();  //使用独立的layout供新的appender使用layout2->setConversionPattern("%d: %p %c : %m%n");log4cpp::RollingFileAppender* rollfileAppender = new log4cpp::RollingFileAppender("roAppender", "test.log", 1024, 4); rollfileAppender->setLayout(layout2);log4cpp::Category &root = log4cpp::Category::getRoot();log4cpp::Category &infoCategory = root.getInstance(string(argv[0]));infoCategory.addAppender(app);infoCategory.addAppender(rollfileAppender);infoCategory.setPriority(log4cpp::Priority::INFO);infoCategory.info("system is running...");infoCategory.warn("system has got a warn...");infoCategory.error("system has got an error...");infoCategory.fatal("system has crashed....");log4cpp::Category::shutdown();return 0;
}

记录使用log4cpp析构报错相关推荐

  1. 【错误记录】VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ② | 删除交换空间 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 [错误记录]VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ) 博客中 , 给出了解决方案 ...

  2. 记录一次etcd报错: listen tcp xxx.xxx.xxx.xxx:2380:bind: cannot assign requested address

    记录一次etcd报错 背景 问题定位 问题排查 解决方案 小结 背景 今天打算在腾讯云环境上安装k8s(采用ansible脚本自动化部署安装),当安装完etcd之后,发现启动报错. 机器:腾讯云服务器 ...

  3. 记录华夏ERP配置报错

    记录华夏ERP配置报错 目录 后端 java: diamond operator is not supported in -source 1.5 java: Compilation failed: i ...

  4. K8S 1.18.0 以及KubeEdge 1.10.3 三机安装部署(含过程记录及遇到的报错和解决方法)

    因为网络上大多数教程只有部署相关的命令,而无输入命令后正确界面的显示样例,因此在参考网络上教程并跟随实现的过程中,我将过程进行截图记录,供大家参考.希望对大家有帮助~ 一. K8S部署 选用了三台虚拟 ...

  5. 记录一次wagon报错Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0:upload-single

    记录一次wagon报错Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0:upload-single (default-cl ...

  6. [Deepin - Pycharm调试记录] Matplot3D动态画图报错问题

    Deepin - Pycharm调试记录 - Matplot3D动态画图报错问题 写在开头的话 应该不会有人傻到看这个wiki吧,我花了1个小时才发现问题,是我自己方法调错了. 这个wiki不会细致的 ...

  7. 【错误记录】GitHub 提交报错 ( OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 GitHub 提交报错 : 16:37:19.781: [ClassLoader_Demo] git -c credential.helper= - ...

  8. 【错误记录】反射内部类报错 ( Android 使用 Hook 时反射内部类报错 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 使用场景 : 需要 Hook 住 View 的 OnClickListener 点击方法 , 该监听器在 View 的内部类 ListenerInf ...

  9. 【错误记录】Flutter 构建报错 ( Because xxx requires SDK version >=2.12.0-0 <3.0.0, versio | Dart SDK 版本低 )

    文章目录 一.报错信息 二.问题分析 三.解决方案 一.报错信息 event sent after app closed: {id: 0, progressId: null, message: Run ...

最新文章

  1. ibatis主键自动生成
  2. 如何实施好基于MOSS的企业搜索项目(上)
  3. ansible模块---续
  4. linux修改重传次数,聊一聊重传次数
  5. matlab编程设计fir滤波器,用MATLAB设计FIR滤波器
  6. 微软语音 AI 技术与微软听听文档小程序实践 | AI ProCon 2019
  7. maven学习记录一——maven介绍及入门
  8. 《JQuery 能干点啥~》第四讲 html() 与 text()的赋值比较
  9. 在Java中如何高效判断数组中是否包含某个元素
  10. 微信小程序图片宽高自适应
  11. 查看dll文件的两种办法
  12. 手机连接 linux系统软件,linux上安卓手机管理软件及连接办法
  13. 解决PyQt5程序报错Process finished with exit code -1073740791 (0xC0000409)
  14. 几款好用证件照制作工具推荐
  15. [附源码]计算机毕业设计小太阳幼儿园学生管理系统Springboot程序
  16. PPT使用的一些技巧总结
  17. EVB_MX+ TencentOS tiny物联网开发板首次使用记录路灯调试(1)
  18. linux命令pp,linux命令 $- 是什么意思
  19. 无缝衔接的人会遭报应吗_恋爱中,无缝对接的都是垃圾吗?
  20. 一些常用的编程语言和他们的特点

热门文章

  1. 乐视推出真无线耳机:售价218元还支持主动降噪
  2. vrep小车避障算法_[番外1]Vrep小车机械臂抓取
  3. 曼谷 Web3 游记:数字游民天堂,世俗与割裂的“罪恶都市”
  4. CarSim和Simulink联合仿真-无人驾驶
  5. html 原型图片,可视化的JavaScript:原型继承(动图演示)
  6. 二叉树的前序、中序、后序遍历(递归、非递归写法)
  7. 性能测试调优JVM调优(三)之JMeter使用
  8. 【源码】hline与vline——绘制当前坐标轴上的水平线或垂直线
  9. File Zilla Server,读取目录列表失败(425 Can't open data connection.)的解决办法
  10. Unity 3D模型展示之生成标注