log4cpp和log4cplus,log4cplus使用

  log4cpp和log4cplus,log4cplus使用

  项目日志——Log4cpp开源的C类库Log4cpp提供了很多功能,帮助我们的应用程序更方便地记录日志。安装与构建Log4cpp官网—— http://log4cpp.sourceforge.net/wget https://nchc . dl . SourceForge . net/project/log 4 CPP/log 4 CPP 1.1 . x(新)

  cd log4cpp

  #根用户。/configure - prefix=执行路径

  # 示例

  # ./configure-prefix=/home/宣萱/share_bike/third/lib/log4cpp

  制造

  进行安装使用包含头文件#include log4cpp/Category.hh

  #包括日志4c PP/文件附加器。倍硬

  #包括日志4c PP/模式布局。倍硬

  #包括日志4c PP/ostreamappender。倍硬初始化日志输出的目的地示例1:输出到标准输出标准* cout

  log 4 CPP:Appender * Appender=new log 4 CPP:OstreamAppender( root ,STD:cout);示例2:输出到原木文件

  log 4 CPP:Appender * Appender=new log 4 CPP:file Appender( root , test。log’);输出方式如下:

  log4cpp:FileAppender //输出到文件

  log4cpp:RollingFileAppender //输出到回卷文件,即当文件到达某个大小后回卷

  log4cpp:OstreamAppender //输出到一个牡蛎类

  log 4 CPP:RemoteSyslogAppender//输出到远程系统记录服务器

  log4cpp:StringQueueAppender //内存队列

  log4cpp:SyslogAppender //本地系统记录

  log4cpp:Win32DebugAppender //发送到缺省系统调试器

  log4cpp:NTEventLogAppender //发送到胜利事件日志注意:

  实际上日志输出到终端或文件中是很慢的,可能会引起超正析象管(图片Orthicon)中断,所以我们可以先输出到内存中(StringQueueAppender),然后在输出到其它地方,这样效率较高。

  设置日志输出格式log 4 CPP:模式布局*模式布局=new log 4 CPP:模式布局();

  模式布局-setConversionPattern(" % d[% p]-% m % n ");

  appender-set布局(模式布局);日志输出格式控制如下:

  log4cpp:PatternLayout类引用

  %%%% -单个百分号

  %c -类别

  %d -日期

  日期格式:日期格式字符后面可以跟一个用大括号括起来的日期格式说明符。例如,%d{%H:%M:%S,%l}或%d{%d %m %Y %H:%M:%S,%l} .如果没有给出日期格式说明符,则使用以下格式:“1980年1月2日02时03分55秒结婚”.日期格式说明符允许使用与ANSI C函数得到指定格式的时间相同的语法,但增加了一点。加法运算是毫秒的说明符%l,用零填充以形成3位数。

  %m -消息

  %n -平台特定的行分隔符

  %p -优先级

  自创建此布局以来已有%r毫秒。

  自1970年一月一日以来的%R秒

  自进程启动以来的%u时钟周期

  % x-NDC设置输出类别和日志优先级log 4 CPP:Category root=log 4 CPP:Category:getRoot();

  根。设置优先级(log 4 CPP:Priority:NOTICE);

  根。添加appender(附加器);日志的级别如下:

  不设置调试信息通知警告错误严重警告致命=紧急。

  低于该级别的日志不会被记录。

  定义宏来减少代码量# define LOG(_ _ level)LOG 4c PP:Category:getRoot()LOG 4c PP:Priority:_ _ level _ _ FILE _ _ _ _ LINE _ _ :使用:

  记录(调试)"调试";测试什么是单例?

  程序中仅有一个的对象。配置文件:log.conf

  #定义根类别的属性

  log4cpp.rootCategory=DEBUG,RootLog

  #定义根日志属性

  log 4 CPP。阑尾手术。根日志=滚动文件附加器

  log 4 CPP。阑尾手术。根日志。布局=图案布局

  log 4 CPP。阑尾手术。根日志。布局。转换模式=% d { % M-% d % H:% M:% S % l }[% t][% p]% M % n

  log 4 CPP。阑尾手术。根日志。文件名=/var/log/share _ bike。原木

  log 4 CPP。阑尾手术。根日志。最大文件大小=268435456 # 256 MB

  log 4 CPP。阑尾手术。根日志。文件名模式=share _ bike _ % I . log

  log 4 CPP。阑尾手术。根日志。maxbackupindex=256封装为一个类Logger.h

  #ifndef DISTRIBUTED_LOGGER_H_

  #定义分布式记录器_H_

  #包含字符串

  #include log4cpp/Category.hh

  类记录器{

  公共:

  布尔初始化(常量标准:字符串日志文件);

  静态记录器*实例(){//返回单例——全局唯一对象

  返回实例_;

  }

  log4cpp:Category* GetHandle(){

  返回类别_;

  }

  受保护:

  静态记录器实例_;

  log 4 CPP:Category * Category _;

  };

  # define LOG _ INFO Logger:instance()-GetHandle()-INFO

  # define LOG _ DEBUG Logger:instance()-GetHandle()-DEBUG

  # define LOG _ ERROR Logger:instance()-GetHandle()-ERROR

  # define LOG _ WARN Logger:instance()-GetHandle()-WARN

  #endifLogger.cpp

  #include Logger.h

  #包括输入输出流

  #include log4cpp/Category.hh

  #包括日志4c PP/文件附加器。倍硬

  #包括日志4c PP/模式布局。倍硬

  #包括日志4c PP/ostreamappender。倍硬

  #包括日志4c PP/属性配置器。倍硬

  Logger Logger:instance _;

  bool Logger:init(const STD:string log _ conf _ file){

  尝试{

  log 4 CPP:属性配置器:configure(log _ conf _ file);

  } catch(日志4c PP:配置失败f){

  标准:cerr 加载日志配置文件 log_conf_file.c_str()失败,结果为: f . what()STD:endl;

  返回错误的

  }

  Category _=log 4 CPP:Category:getRoot();

  返回真实的

  }测试主页面

  #include iniconfig.h //注意路径,会在CMake中进行调整

  #include configdef.h

  #include Logger.h

  int main(int argc,char** argv){

  如果(argc!=3){//缺少参数

  printf(请输入shbk配置文件路径日志文件配置!\ n’);

  return-1;

  }

  如果(!logger:instance()-init(STD:string(argv[2])){

  fprintf(stderr,初始化日志模块失败. \ n );

  return-2;

  }

  Iniconfig配置;

  如果(!配置。loadfile(STD:string(argv[1]){

  //printf(load %s失败. argv[1]);

  LOG_ERROR(加载%s失败argv[1]);

  return-3;

  }

  //测试是否读取成功

  ST _ env _ config conf _ args=config。getconfig();

  日志信息([数据库]IP:% s \ n[数据库]端口:%d\n[数据库]用户:% s \ n[数据库]密码:% s \ n[数据库]数据库:% s \ n[服务器]端口:% d \ n ,

  conf_args.db_ip.c_str(),

  conf_args.db_port,

  conf_args.db_user.c_str(),

  conf_args.db_pwd.c_str(),

  conf_args.db_name.c_str(),

  conf _ argsSVR _ port);

  返回0;

  }**注意链接库:**下面为示例,请根据自身情况调整。

  目标链接库(通用日志4c PP)目标链接库(共享自行车pthread)

  TARGET _ LINK _ LIBRARIES($ { PROJECT _ NAME } liblog 4c PP。答执行:/共享_自行车./conf/share_bike.ini./conf/log.conf查看:

  在日志文件中。var/log/share_bike.log为保存路径。

  log 4 CPP。阑尾手术。根日志。文件名=/var/log/share _ bike。原木

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: