记录使用log4cpp析构报错
问题描述:
使用单元测试测试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析构报错相关推荐
- 【错误记录】VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ② | 删除交换空间 )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 [错误记录]VMware 虚拟机报错 ( 向 VMWare 虚拟机中的 Ubuntu 系统拷贝文件时磁盘空间不足 ) 博客中 , 给出了解决方案 ...
- 记录一次etcd报错: listen tcp xxx.xxx.xxx.xxx:2380:bind: cannot assign requested address
记录一次etcd报错 背景 问题定位 问题排查 解决方案 小结 背景 今天打算在腾讯云环境上安装k8s(采用ansible脚本自动化部署安装),当安装完etcd之后,发现启动报错. 机器:腾讯云服务器 ...
- 记录华夏ERP配置报错
记录华夏ERP配置报错 目录 后端 java: diamond operator is not supported in -source 1.5 java: Compilation failed: i ...
- K8S 1.18.0 以及KubeEdge 1.10.3 三机安装部署(含过程记录及遇到的报错和解决方法)
因为网络上大多数教程只有部署相关的命令,而无输入命令后正确界面的显示样例,因此在参考网络上教程并跟随实现的过程中,我将过程进行截图记录,供大家参考.希望对大家有帮助~ 一. K8S部署 选用了三台虚拟 ...
- 记录一次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 ...
- [Deepin - Pycharm调试记录] Matplot3D动态画图报错问题
Deepin - Pycharm调试记录 - Matplot3D动态画图报错问题 写在开头的话 应该不会有人傻到看这个wiki吧,我花了1个小时才发现问题,是我自己方法调错了. 这个wiki不会细致的 ...
- 【错误记录】GitHub 提交报错 ( OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 )
文章目录 一.报错信息 二.解决方案 一.报错信息 GitHub 提交报错 : 16:37:19.781: [ClassLoader_Demo] git -c credential.helper= - ...
- 【错误记录】反射内部类报错 ( Android 使用 Hook 时反射内部类报错 )
文章目录 一.报错信息 二.解决方案 一.报错信息 使用场景 : 需要 Hook 住 View 的 OnClickListener 点击方法 , 该监听器在 View 的内部类 ListenerInf ...
- 【错误记录】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 ...
最新文章
- ibatis主键自动生成
- 如何实施好基于MOSS的企业搜索项目(上)
- ansible模块---续
- linux修改重传次数,聊一聊重传次数
- matlab编程设计fir滤波器,用MATLAB设计FIR滤波器
- 微软语音 AI 技术与微软听听文档小程序实践 | AI ProCon 2019
- maven学习记录一——maven介绍及入门
- 《JQuery 能干点啥~》第四讲 html() 与 text()的赋值比较
- 在Java中如何高效判断数组中是否包含某个元素
- 微信小程序图片宽高自适应
- 查看dll文件的两种办法
- 手机连接 linux系统软件,linux上安卓手机管理软件及连接办法
- 解决PyQt5程序报错Process finished with exit code -1073740791 (0xC0000409)
- 几款好用证件照制作工具推荐
- [附源码]计算机毕业设计小太阳幼儿园学生管理系统Springboot程序
- PPT使用的一些技巧总结
- EVB_MX+ TencentOS tiny物联网开发板首次使用记录路灯调试(1)
- linux命令pp,linux命令 $- 是什么意思
- 无缝衔接的人会遭报应吗_恋爱中,无缝对接的都是垃圾吗?
- 一些常用的编程语言和他们的特点
热门文章
- 乐视推出真无线耳机:售价218元还支持主动降噪
- vrep小车避障算法_[番外1]Vrep小车机械臂抓取
- 曼谷 Web3 游记:数字游民天堂,世俗与割裂的“罪恶都市”
- CarSim和Simulink联合仿真-无人驾驶
- html 原型图片,可视化的JavaScript:原型继承(动图演示)
- 二叉树的前序、中序、后序遍历(递归、非递归写法)
- 性能测试调优JVM调优(三)之JMeter使用
- 【源码】hline与vline——绘制当前坐标轴上的水平线或垂直线
- File Zilla Server,读取目录列表失败(425 Can't open data connection.)的解决办法
- Unity 3D模型展示之生成标注