最近学习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 封装相关推荐

  1. ajax如何传递josn数据,jq之ajax以及json数据传递

    闭包演示 function transfer(){ var dat = $( "#sel" ).val(); //console.log(dat) $.ajax({ type:&q ...

  2. log4cpp的配置

    转自 http://www.usidcbbs.com/simple/?t1514.html C++日志库,log4cplus,log4cpp使用资料手册 1 下载log4cpp并解压. 2 打开\lo ...

  3. c++ log4cpp的实现 包含使用实例和下载源码

    log4cpp源码下载点击此处下载 调用对应宏定义实现日志记录功能 流程 创建一个Appender,并指定其包含的Layout 从系统中得到Category的根,将Appender添加到该Catego ...

  4. 服务器开发27:log4c充当服务器跨平台日志库(cmake跨平台编译,配置介绍及代码封装)

    文章目录 一.跨平台编译 1)编译准备 (1)expat编译 2)原生linux编译.安装 3)cmake跨平台编译 二.log4c配置笔记 1)与log4cpp\log4cxx的比较 2)log4c ...

  5. IDEA中将代码块封装为方法,IDEA代码重构快捷键

    IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:

  6. 2022-2028年中国封装用胶膜行业运营现状及投资发展潜力报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了封装用胶膜行业相关概述.中国封装用胶膜行业运行环境.分析了中国封装用 ...

  7. 第十六节,使用函数封装库tf.contrib.layers

    目录 一 tf.contrib.layers中的具体函数介绍 1.tf.contrib.layers.conv2d()函数的定义如下: 2.tf.contrib.layers.max_pool2d() ...

  8. 薄膜封装,等离子体技术,原子层沉积,化学气相沉积

    薄膜封装,等离子体技术,原子层沉积,化学气相沉积 薄膜封装 薄膜封装概念 薄膜真空沉积的一个很重要的技术应用就是薄膜封装.人们对薄膜封装最简单的认识就是日常生活中最常见的保鲜膜,水氧渗透率大约是1-1 ...

  9. 为什么要使用Retrofit封装OkHttp,而不单独使用OkHttp?

    OkHttp的优点: 开源的轻量级框架.高效.快速的请求客户端,可以单独使用它来实现网络请求. 支持SPDY: 支持连接池,可极大减少延时: 支持Gzip压缩响应体,降低传输内容的大小: 支持Http ...

最新文章

  1. ZooKeeper学习
  2. IntelliJ IDEA 2019从入门到癫狂 图文教程!
  3. jfinal linux 乱码,分享JFinal中renderFile方法中文文件名乱码问题的解决办法
  4. python---django中orm的使用(5)数据库的基本操作(性能相关:select_related,和prefetch_related重点)(以及事务操作)...
  5. c 调用java post方法_C#调用Java方法(详细实例)
  6. 解决windows7您当前无权访问该文件夹的问题
  7. owncloud8 php,owncloud-8.2.3
  8. 在线文档有哪些技术难点
  9. leetcode—14.链表反转类题目python解答
  10. HTML,CSS基础十大重点问题
  11. redis 一主二从三哨兵
  12. LeetCode刷题第5周小结
  13. ASC计算机比赛报名,新闻|2019 ASC 世界大学生超级计算机竞赛(ASC19)报名通知|信息与软件工程学院...
  14. 校技能节之打铁记~~~~~~
  15. yarn安装依赖时出现错误(2种解决方法)Integrity check failed for “antd“ computed integrity doesn‘t match our records)
  16. excel切片器_excel:在透视表中使用切片器高效筛选,升职加薪系列
  17. 【条码检测算法】不起眼的条码识别也能玩出这么多花样
  18. 西瓜视频怎么下载视频?
  19. Oracle的SQL性能优化
  20. 软考分类精讲-计算机网络

热门文章

  1. 斑马属于谁?谁爱喝矿泉水?
  2. 动漫萌娘岛风酱高清日历壁纸
  3. 【已开源】Flutter 腾讯优量汇广告插件,帮助开发者获利 - FlutterAds
  4. java 三种工厂模式
  5. 程序员的我,在家的工作台是这样滴
  6. HTML/CSS中的字体样式font-family的中英对照
  7. 大学生规划职业宜趁早 认清专业确定方向 ——三人大学学习平台
  8. 全球及中国氟氯西林原料药行业十四五规划与发展远景展望报告2022-2028年
  9. ArduPilot Tutorial(PDF版)及ArduPilot飞行模式介绍
  10. OKI MICROLINE 8100F 打印机驱动