log4cpp 封装

log4cpp 封装最近学习 log4cpp 试着封装了下 mark 下 includeiostr includelog4c Category hh includelog4c Appender hh includelog4c FileAppender hh includelog4c RollingFileA hh includelog4c Ostrea

最近学习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*1024 rollfileAppender_ = 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可以有多个appender root_.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; } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232756.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 人脸关键点检测3——DCNN[通俗易懂]

    人脸关键点检测3——DCNN[通俗易懂]《DeepConvolutionalNetworkCascadeforFacialPointDetection》2013年,通过3级卷积神经网络来估计人脸关键点(5点),属于级联回归方法。级联的卷积网络结构:Level1,采用了3个CNN,输入区域分别为整张脸(F1),眼睛和鼻子(EN1),鼻子和嘴(EM1)。F1输入尺寸为39*39,输出5个关键点的坐标;EN1输入…

    2022年5月24日
    49
  • JS一维数组转化为三维数组有这个方法就够了

    JS一维数组转化为三维数组有这个方法就够了一个方法搞定 js 一维数组转化三维数组

    2025年8月23日
    3
  • linux查看端口号占用命令-netstat

    linux查看端口号占用命令-netstat题记经常会发现,很多时候我们在运行一些带有端口的程序时,程序经常会报端口被占用的问题,比如Tomcat8080,端口起不来。查看端口号netstat如果发现某个端口被占用后,可以用命令查看,该端口到底是被哪个进程所占用。命令如下:netstat-pan|grep5623#其中5623位端口号如图:发现5623的端口,被28425的进程id所占用,继

    2022年7月23日
    14
  • Android中常用的加密方式[通俗易懂]

    Android中常用的加密方式[通俗易懂]Android中常用的加密方式HmacSHA1publicstaticStringgetSignUtil(Stringkey,Stringbase){Log.i(TAG,”getSignUtil:GETSIGN”);Stringtype=”HmacSHA1″;SecretKeySpecsecret=newSecretKeySpec(key.getBytes(),type);Macmac=null;try{

    2022年5月13日
    30
  • mapGetters 辅助函数「建议收藏」

    mapGetters 辅助函数「建议收藏」1:mapGetters:辅助函数mapGetters:辅助函数mapGetters:辅助函数仅仅将store中的getter映射到局部计算属性:1:import{mapGetters}from’vuex’2:exportdefault{computer:{//使用对象展开运算符将getter混入computer对象中…mapGetters([‘getMachin…

    2022年5月2日
    122
  • python编程控制示波器设备_基于Python的示波器的截屏GUI界面[通俗易懂]

    python编程控制示波器设备_基于Python的示波器的截屏GUI界面[通俗易懂]importtimeimporttkinterastkfromtkinterimport*fromtkinterimportttkclassScreenCapture(object):def__init__(self):self.idn=self.__class__.__name__#InstrumentInitialisation#self.instr=MyIn…

    2022年10月12日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号