log4cpp简单使用及踩到的坑
log4cpp是log4j的一个扩展, C++开发者可用该库记录日志,可输出到终端,亦可保存到文件。
下面简单demo展示如何输出日志到输出终端。
#include <iostream>
#include <log4cpp/Category.hh>
#include <log4cpp/OstreamAppender.hh>
#include <log4cpp/Priority.hh>
#include <log4cpp/PatternLayout.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::Category &root = log4cpp::Category::getRoot();
log4cpp::Category &infoCategory = root.getInstance(string(argv[])); infoCategory.addAppender(app);
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 ;
}
第10行,创建一个输出器,ostreamAppender(const streing &name, ostream *stream), name为该输出器的名字,可随意命名,最好唯一, stream输出流对象指针
第12-13行,创建一个布局对象,实际功能为定义日志输出格式: %d-日期, %p-优先级, %c-策略名, %m-消息体, %n-换行
第14行, 格式化ostreamAppender对象的输出格式
第16-20行, 创建category对象, category主要功能是输出日志,根据Appender对象的不同,将日志输出到不同的对象; getInstance(const string &name), name为策略的名字,一般的,我们使用程序名
第22-25行, 以何种优先级输出日志
第27行, 关闭一系列对象
上述info(), error()等函数,其参数亦可采用printf()函数参数类型,格式化消息体
注意:
上述简单的demo,有个地方需要特别注意,在创建layout对象的时候,一定要创建在堆上,原因在第14行, 次layout指针作为引用传递到ostreamAppender类的最顶层基类,作为其成员对象,在ostreamAppender对象退出其声明周期时,其顶层基类会调用析构函数释放layout指针内存,如果layout是创建在栈上,会导致程序崩溃。
log4cpp简单使用及踩到的坑的更多相关文章
- 【python小随笔】进程池 multiprocessing.Pool的简单实现与踩过的坑
#导入进程模块 import multiprocessing #创建进程池 坑:一定要在循环外面创建进程池,不然会一直创建 pool = multiprocessing.Pool(30) for Si ...
- ajax简单登录(踩过的坑)
登陆页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...
- Pro Flight YOKE 设备键位映射踩过的坑
背景 VR游戏项目.街机游戏项目7月阶段版本快要结束了,考虑到带有键鼠外设显得逼格比较Low,所以决定采用"高大上"的专业设备来进行游戏操作. 需求 需要将键盘鼠标操作的18个键位 ...
- 项目中踩过的坑之-sessionStorage
总想写点什么,却不知道从何写起,那就从项目中踩过的坑开始吧,希望能给可能碰到相同问题的小伙伴一点帮助. 项目情景: 有一个id,要求通过当前网页打开一个新页面(不是当前页面),并把id传给打开的新页面 ...
- web开发实战--弹出式富文本编辑器的实现思路和踩过的坑
前言: 和弟弟合作, 一起整了个智慧屋的小web站点, 里面包含了很多经典的智力和推理题. 其实该站点从技术层面来分析的话, 也算一个信息发布站点. 因此在该网站的后台运营中, 富文本的编辑器显得尤为 ...
- "开发路上踩过的坑要一个个填起来————持续更新······(7月30日)"
欢迎转载,请注明出处! https://gii16.github.io/learnmore/2016/07/29/problem.html 踩过的坑及解决方案记录在此篇博文中! 个人理解,如有偏颇,欢 ...
- 【转载】Fragment 全解析(1):那些年踩过的坑
http://www.jianshu.com/p/d9143a92ad94 Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使 ...
- 《C++之那些年踩过的坑(二)》
C++之那些年踩过的坑(二) 作者:刘俊延(Alinshans) 本系列文章针对我在写C++代码的过程中,尤其是做自己的项目时,踩过的各种坑.以此作为给自己的警惕. 今天讲一个小点,虽然小,但如果没有 ...
- 《C++之那些年踩过的坑(三)》
C++之那些年踩过的坑(三) 作者:刘俊延(Alinshans) 本系列文章针对我在写C++代码的过程中,尤其是做自己的项目时,踩过的各种坑.以此作为给自己的警惕. [版权声明]转载请注明原文来自:h ...
随机推荐
- 汉诺塔问题php解决
面向过程解决 <?php function hanio($n,$x,$y,$z){//把n个盘子,按照要求从x移到z,y是中介 //递归跳出条件 if($n==1){ move($n, $x, ...
- CSS盒子模型之CSS3可伸缩框属性(Flexible Box)
CSS盒子模型(下) 一.CSS3可伸缩框(Flexible Box) 可伸缩框属性(Flexible Box)是css3新添加的盒子模型属性,有人称之为弹性盒模型,它的出现打破了我们经常使用的浮动布 ...
- CSS3新特性2D、3D效果讲解
希望这篇博客可以对你有所帮助,如果有什么技术上的问题,希望我们可以做进一步的交流,如果你觉得我哪里阐述的不正确或者你有更好的更透彻的理解,也可以联系我,我在这里随时等着你. 对于css/html是每个 ...
- HDU 5550 - Game Rooms(DP + 前缀和预处理)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=5550 题意: 一个大楼有n(2≤n≤4000)层,每层可以建一个乒乓球房或者一个游泳房,且每种房间在大楼 ...
- BZOJ3514:GERALD07加强版(LCT,主席树)
Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. Input 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密. 接下来 ...
- HBase学习之路 (二)HBase集群安装
前提 1.HBase 依赖于 HDFS 做底层的数据存储 2.HBase 依赖于 MapReduce 做数据计算 3.HBase 依赖于 ZooKeeper 做服务协调 4.HBase源码是java编 ...
- java中抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰
1.abstract与static what abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用. static:用来声明静态方法,静态方 ...
- Linux磁盘分区和挂载
Linux磁盘分区和挂载 分区 分区的方式: mbr分区 最多支持4个主分区 系统只能安装到主分区上 扩展分区要占用一个主分区 MBR最大支持2TB,但拥有最好的兼容性 gtp分区 支持无线多个主分区 ...
- 关于ESP8266EX的一些资料
乐鑫智能互联平台 ESP8266EX 拥有高性能无线 SOC,给移动平台设计师带来福⾳音,它以最低成本提供最大实用性,为 WiFi 功能嵌入其他系统提供无限可能. ESP8266EX 是⼀一个完整且⾃ ...
- python logging模块日志回滚TimedRotatingFileHandler
# coding=utf-8 import logging import time import os import logging.handlers import re def logger(app ...