log4cpp 封装
最近学习log4cpp,试着封装了下,mark下。
#include<iostream>
#include<log4cpp/Category.hh>#include<log4cpp/Appender.hh>
#include<log4cpp/FileAppender.hh>
#include<log4cpp/RollingFileAppender.hh>
#include<log4cpp/OstreamAppender.hh>#include<log4cpp/PatternLayout.hh>
#include<log4cpp/Priority.hh>using namespace std;//1.实现日志文件信息在终端上显示
//2.实现日志文件信息在终端和日志文件同时显示
//3.实现回滚备份,替换掉2即可
class Mylog
{public:Mylog();~Mylog();public:void error(const char * msg);void warn(const char * msg);void info(const char * msg);void debug(const char * msg);void set_priority(const char *);private://布局log4cpp::PatternLayout * pLayout_cout_;log4cpp::PatternLayout * pLayout_file_;log4cpp::PatternLayout * pLayout_rollfile_;//依附目标文件log4cpp::OstreamAppender * osAppender_;log4cpp::FileAppender * fileAppender_;log4cpp::RollingFileAppender * rollfileAppender_;//种类log4cpp::Category & root_;
};//构造函数
//引用必须用初始化列表初始化
Mylog::Mylog():root_(log4cpp::Category::getInstance("infoCategory"))
{std::cout << "Mylog()" << std::endl;//创建Layout并设置成pattern模式pLayout_cout_ = new log4cpp::PatternLayout();pLayout_cout_ -> setConversionPattern("%d: %p %c %x: %m%n");pLayout_file_ = new log4cpp::PatternLayout();pLayout_file_ -> setConversionPattern("%d: %p %c %x: %m%n");pLayout_rollfile_ = new log4cpp::PatternLayout();pLayout_rollfile_ -> setConversionPattern("%d: %p %c %x: %m%n");//创建Appender并将layout对象绑定osAppender_ = new log4cpp::OstreamAppender("osAppender_", &std::cout); osAppender_ -> setLayout(pLayout_cout_);//日志文件保存在固定的文件夹中fileAppender_ = new log4cpp::FileAppender("fileAppender_", "/home/lukey/log/myfile_log");fileAppender_ -> setLayout(pLayout_file_);//回滚文件也是保存在固定地方,为了便于测试把文件大小设置成1*1024rollfileAppender_ = new log4cpp::RollingFileAppender("rollfileAppender_","/home/lukey/log/myrolfile_log", 1*1024, 3);rollfileAppender_ -> setLayout(pLayout_rollfile_);//log4cpp::Category & root_ = log4cpp::Category::getInstance("infoCategory");//不能再这初始化,引用必须在初始化列表中//把Appender对象附到category上,一个category可以有多个appenderroot_.addAppender(osAppender_);root_.addAppender(fileAppender_);root_.addAppender(rollfileAppender_);
}//设置优先级
void Mylog::set_priority(const char * prioritylevel)
{if(prioritylevel == "DEBUG")root_.setPriority(log4cpp::Priority::DEBUG);else if(prioritylevel == "ERROR")root_.setPriority(log4cpp::Priority::ERROR);else if(prioritylevel == "WARN")root_.setPriority(log4cpp::Priority::WARN);else if(prioritylevel == "INFO")root_.setPriority(log4cpp::Priority::INFO);else //把优先级设置到最低root_.setPriority(801);
}void Mylog::error(const char * msg)
{std::cout << "error()" << std::endl;root_.error(msg);
}void Mylog::warn(const char * msg)
{std::cout << "warn()" << std::endl;root_.warn(msg);
}
void Mylog::info(const char * msg)
{std::cout << "info()" << std::endl;root_.info(msg);
}void Mylog::debug(const char * msg)
{std::cout << "debug()" << std::endl;root_.debug(msg);
}//析构函数
Mylog::~Mylog()
{std::cout << "~Mylog()" << std::endl;log4cpp::Category::shutdown();
}//简单测试所写的封装
int main(int argc, char * argv[])
{const char * msg = "hello,world";const char * priority = "ERROR";Mylog mylog;mylog.set_priority(priority);mylog.error(msg);mylog.warn(msg);mylog.info(msg);mylog.debug(msg);return 0;
}
log4cpp 封装相关推荐
- ajax如何传递josn数据,jq之ajax以及json数据传递
闭包演示 function transfer(){ var dat = $( "#sel" ).val(); //console.log(dat) $.ajax({ type:&q ...
- log4cpp的配置
转自 http://www.usidcbbs.com/simple/?t1514.html C++日志库,log4cplus,log4cpp使用资料手册 1 下载log4cpp并解压. 2 打开\lo ...
- c++ log4cpp的实现 包含使用实例和下载源码
log4cpp源码下载点击此处下载 调用对应宏定义实现日志记录功能 流程 创建一个Appender,并指定其包含的Layout 从系统中得到Category的根,将Appender添加到该Catego ...
- 服务器开发27:log4c充当服务器跨平台日志库(cmake跨平台编译,配置介绍及代码封装)
文章目录 一.跨平台编译 1)编译准备 (1)expat编译 2)原生linux编译.安装 3)cmake跨平台编译 二.log4c配置笔记 1)与log4cpp\log4cxx的比较 2)log4c ...
- IDEA中将代码块封装为方法,IDEA代码重构快捷键
IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:
- 2022-2028年中国封装用胶膜行业运营现状及投资发展潜力报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了封装用胶膜行业相关概述.中国封装用胶膜行业运行环境.分析了中国封装用 ...
- 第十六节,使用函数封装库tf.contrib.layers
目录 一 tf.contrib.layers中的具体函数介绍 1.tf.contrib.layers.conv2d()函数的定义如下: 2.tf.contrib.layers.max_pool2d() ...
- 薄膜封装,等离子体技术,原子层沉积,化学气相沉积
薄膜封装,等离子体技术,原子层沉积,化学气相沉积 薄膜封装 薄膜封装概念 薄膜真空沉积的一个很重要的技术应用就是薄膜封装.人们对薄膜封装最简单的认识就是日常生活中最常见的保鲜膜,水氧渗透率大约是1-1 ...
- 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?
OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...
最新文章
- ZooKeeper学习
- IntelliJ IDEA 2019从入门到癫狂 图文教程!
- jfinal linux 乱码,分享JFinal中renderFile方法中文文件名乱码问题的解决办法
- python---django中orm的使用(5)数据库的基本操作(性能相关:select_related,和prefetch_related重点)(以及事务操作)...
- c 调用java post方法_C#调用Java方法(详细实例)
- 解决windows7您当前无权访问该文件夹的问题
- owncloud8 php,owncloud-8.2.3
- 在线文档有哪些技术难点
- leetcode—14.链表反转类题目python解答
- HTML,CSS基础十大重点问题
- redis 一主二从三哨兵
- LeetCode刷题第5周小结
- ASC计算机比赛报名,新闻|2019 ASC 世界大学生超级计算机竞赛(ASC19)报名通知|信息与软件工程学院...
- 校技能节之打铁记~~~~~~
- yarn安装依赖时出现错误(2种解决方法)Integrity check failed for “antd“ computed integrity doesn‘t match our records)
- excel切片器_excel:在透视表中使用切片器高效筛选,升职加薪系列
- 【条码检测算法】不起眼的条码识别也能玩出这么多花样
- 西瓜视频怎么下载视频?
- Oracle的SQL性能优化
- 软考分类精讲-计算机网络