C++开源库(一) ----log4cpp详解
我们在写程序的时候通常会希望将一些信息记录下来,方便我们进行日后的一些信息跟踪,错误排查等等。比如:我们在进行数据库操作的时候,我们通常希望知道现在是程序的哪一部分进行了数据库的操作,所以我们会记录下threadid + sql这样的日志。但是通常我们都不情愿自己进行log的封装,这个时候我们就会想到使用第三方的库,今天我们就说一下c++中的第三方库----log4cpp,写过java程序的同学们都长都会使用log4j这样一个日志系统,其实log4cpp可以说是log4j对c++的一个扩展。
下面我们就学习一下log4cpp,首先说一下log4cpp的几个大的组件,layouts,appenders,categories三大组件,大致的过程是这样的,layouts负责进行日志输出格式的限制,appenders负责进行数据输出位置的限制,categories负责进行真正的日志处理,至于他们的详细功能我们稍后会逐一详细叙述。
- layouts: 负责进行输出日志格式的限制,其中包含四个主要的类: Layout,BasicLayout,PatternLayout,SimpleLayout四个类,这四个类的UML图如下:
Layout是一个顶层的抽象类,其他类都继承子这个类。
- SimpleLayout: 以“优先级(priority) - 日志信息”格式显示,由于显示的信息过于简单,所以通常都不愿意使用这个模式。
- BasicLayout: 以“时间戳+优先级+categoriesName+“:”+Info来表示日志的相关信息。
- PatternLayout:可以使用类似于c语言的模式进行相关的参数设置,具体如下:
- %c: 指的是categories的name
- %d:指的是时间,但是可以具体制定时间的格式,制定的模式例如这样: %d{%H:%M:%S,%l}
- %m: 指的是日志的消息
- %n: 指的是换行符,会根据平台的不同,使用不同的格式,对用户透明
- %p: 优先级等等
- 具体情况可以参见log4cpp
- 设置的函数是Layout.setConversionPattern()
2. Appender: 我们设置的layout只是相当于设置了日志的模式,但是我们要将使用制定模式的日志打印到什么地方,那就需要用到Appender,下面我们简单的介绍一下Appender的几种类型:
- FileAppender: 用于将日志输出到文件中
C++开源库(一) ----log4cpp详解的更多相关文章
- C++开源库(一) ----libConfig详解
博主天生患有蛋疼疾病,写博不易,转载注明出处http://www.cnblogs.com/liboBlog/,谢谢! 在写程序的时候必不可少的一个部分就是conf文件的解析,但是如果自己解析的话会比较 ...
- 全网最全的Windows下Python2 / Python3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)
不多说,直接上干货! 建议,你用Anaconda2或Anaconda3. 见 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库( ...
- python中requests库使用方法详解
目录 python中requests库使用方法详解 官方文档 什么是Requests 安装Requests库 基本的GET请求 带参数的GET请求 解析json 添加headers 基本POST请求 ...
- 【Solr】索引库查询界面详解
目录 索引库查询界面详解 回到顶部 索引库查询界面详解 q:主查询条件.完全支持lucene语法.还进行了扩展. fq:过滤查询.是在主查询条件查询结果的基础上进行过滤.例如:product_pric ...
- c/c++ 标准库 插入迭代器 详解
标准库 插入迭代器 详解 插入迭代器作用:copy等函数不能改变容器的大小,所以有时copy先容器是个空的容器,如果不使用插入迭代器,是无法使用copy等函数的. 例如下面的代码就是错误的: list ...
- c/c++ 标准库 bind 函数 详解
标准库 bind 函数 详解 bind函数:接收一个函数名作为参数,生成一个新的函数. auto newCallable = bind(callbale, arg_list); arg_list中的参 ...
- 【Linux开发】Linux下jpeglib库的安装详解
Linux下jpeglib库的安装详解 首先要下载所需的库压缩包:jpegsrc.v6b.tar.gz或 jpegsrc.v8b.tar.gz 然后将下载的压缩包随便放在和解压到你喜欢的地方. # t ...
- App域名劫持之DNS高可用 - 开源版HttpDNS方案详解(转)
http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209805123&idx=1&sn=ced8d67c3e2cc3 ...
- 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)
不多说,直接上干货! Anaconda2 里 PS C:\Anaconda2\Scripts> PS C:\Anaconda2\Scripts> pip.exe install itch ...
随机推荐
- TP里的关联查询
$res = $db->join('b on a.ex_id = b.pe_eid')->select(); 注意:这里的表a.表b需要带表前缀
- Cocos2dx版本与CocosBuilder版本匹配问题
我用的是CocosBuilder 2.1版本,将ccbi导入到xcode 5中时提示: WARNING! Incompatible ccbi file version 警告;ccbi版本不兼容. 查看 ...
- js 处理移动端触摸事件
在处理移动端的touch事件时,我们可以选择一些插件来处理,比如jquery ui touch punch.js 提供丰富的触摸效果,可以满足移动端的开发, 但是,有些移动端开发中,并不需要如此复杂的 ...
- 手把手编写PHP框架 深入了解MVC运行流程
1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller ...
- 多线程、方便扩展的Windows服务程序框架
多线程.方便扩展的Windows服务程序框架 吴剑 2012-06-02 转载请注明出处:http://www.cnblogs.com/wu-jian/ 前言 在项目应用中经常会碰到定时调度的工作,比 ...
- OPcache
1.介绍 OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销 2.配置 2.1 opcac ...
- raspi-config Expand root partition to fill SD card 原理
/********************************************************************************** * raspi-config E ...
- sws_scale函数的用法-具体应用
移植ffmpeg过程中,遇到swscale的用法问题,所以查到这篇文章.文章虽然已经过去很长时间,但是还有颇多可以借鉴之处.谢谢“咕咕鐘". 转自:http://guguclock.blog ...
- bzoj 2823: [AHOI2012]信号塔 最小圆覆盖
题目大意: 给定n个点,求面积最小的园覆盖所有点.其中\(n \leq 10^6\) 题解: 恩... 刚拿到这道题的时候... 什么???最小圆覆盖不是\(O(n^3)\)的随机增量算法吗????? ...
- Python:内置函数makestrans()、translate()
转于:https://blog.csdn.net/u014351782/article/details/46740297 博主:夜-feng 一.makestrans() 格式: str.maketr ...