C++日志库log4cplus使用手册
来源:互联网 发布:快商通网络 编辑:程序博客网 时间:2024/05/17 05:08
1、 概要
软件一般都有维护自己的日志,日志有一下几个作用:
Ø 通过查看日志,了解软件正在执行的操作,这一功能可以用于调试;
Ø 当软件发生错误时,可以从日志中找出错误原因。
软件完善日志功能和日志库工具是两个不同的概念,前者需要程序员考虑所有可能的异常情况,并将其捕获然后写进日志,而后者是这一过程中的工具。
本文将要介绍的是一款linux下用于C++的日志库:log4cplus。
2、 安装与配置
安装
#tar –jxvf log4cplus-1.0.4-rc4.tar.bz2*.tar.bz2
#cd log4cplus-1.0.4-rc4
#configure --prefix=/usr/local/
#make
#make install
配置
#export LD_LIBRARY_PATH=/usr/local/log4cplus/lib/
3、 使用实例
log4cplus库实现了5个等级的信息:DEBUG、INFO、WARNING、ERROR和FATAL。
Ø 日志内容形式为:DEBUG Enter the main function
Ø 并且对日志文件名没有进行规定。
本文的实例对log4提供的日志函数进行了封装,最终增加的功能如下:
Ø 日志文件名形式:2009-10-10.txt
Ø 日志内容形式:DEBUG [2009-10-10 10:12:34] Enter the main function
Ø 自定义写日志接口函数形式:writelog("TRACE",” Enter the main function”);
#include <log4cplus/logger.h>#include <log4cplus/configurator.h>#include <iomanip>#include <log4cplus/logger.h>#include <log4cplus/fileappender.h>#include <log4cplus/consoleappender.h>#include <log4cplus/layout.h>#include <time.h>using namespace std;using namespace log4cplus;Logger pTestLogger;void writelog(char* leval,char* info){struct tm *p;time_t lt=time(NULL);p=localtime(<);char* timetemp=ctime(<);*(timetemp+strlen(timetemp)-1)='/0';char temp[10000];sprintf(temp,"[%s] %s",timetemp,info); printf("temp==%s",temp);printf("leval====%s/n",leval);if(memcmp(leval,"TRACE",5)==0)printf("%d===%d",memcmp("TRACE","TRAC1E",5),memcmp(leval,"TRACE",5));LOG4CPLUS_TRACE(pTestLogger,temp);if(memcmp(leval,"DEBUG",5)==0)LOG4CPLUS_DEBUG(pTestLogger,temp);if(memcmp(leval,"INFO",4)==0)LOG4CPLUS_INFO(pTestLogger,temp);if(memcmp(leval,"WARN",4)==0)LOG4CPLUS_WARN(pTestLogger,temp);if(memcmp(leval,"ERROR",5)==0)LOG4CPLUS_ERROR(pTestLogger,temp);if(memcmp(leval,"FATAL",5)==0)LOG4CPLUS_FATAL(pTestLogger,temp);}int main(){char* info="you have a iuns";char filename[50];struct tm *p;time_t lt=time(NULL);p=localtime(<);sprintf(filename,"%d-%d-%d.txt",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);FILE* stream=fopen(filename,"wb");SharedAppenderPtr pFileAppender(new FileAppender((filename)));pTestLogger = Logger::getInstance(("LoggerName"));pTestLogger.addAppender(pFileAppender);writelog("TRACE",info);writelog("DEBUG",info);writelog("ERROR",info); return 0;}
编译命令:
#g++ filetime.cpp -I /usr/local/log4cplus/include/ -L /usr/local/log4cplus/lib -llog4cplus -o filetime
- C++日志库log4cplus使用手册
- C++日志库log4cplus使用手册
- C++ 日志类库 log4cplus
- 使用C++日志库log4cplus
- log4cplus server client模式、log4cplus、log4cplus库(三)(将日志写入到文件)
- c++开源日志库log4cplus
- c++开源日志库log4cplus
- 开源日志库<log4cplus+VS2008使用>
- C++开源日志库log4cplus
- log4cplus开源日志库使用
- C++开源日志库:log4cplus
- c++开源日志库log4cplus
- c++开源日志库log4cplus
- C++日志库log4cplus:SocketAppender记录日志到log Server
- log4cplus 日志应用
- 使用log4cplus写日志
- 开源日志库<log4cplus+VS2008使用>整理
- 开源日志库<log4cplus+VS2008使用>整理
- python 类似 dict
- ADS1.2 Error:(Fatal) L6002u:could not open file
- 在RedHat Linux 9下安装小企鹅中文输入法
- 深刻理解C#的传值调用和传引用调用
- LayoutInflater 添加布局
- C++日志库log4cplus使用手册
- httpd: Could not reliably determine the server's fully qualified domain name
- 1.3 设计一个算法移除字符串中的重复字符,算法不使用额外缓冲。并对你的算法设计测试用例。
- Cocos2d-x lua的随机函数
- EXCEL条件格式应用实
- 数据库缓存方案(Java版的,含测试JSP)
- cocos2d-x游戏开发之细说回调函数
- 如何从Creo向Windchill传递Gathering Part属性值
- 函数模板简单两例(c++)