Chinaunix首页 | 论坛 | 博客
  • 博客访问: 451352
  • 博文数量: 96
  • 博客积分: 4130
  • 博客等级: 上校
  • 技术积分: 1149
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-11 12:32
文章分类

全部博文(96)

文章存档

2011年(19)

2010年(75)

2009年(1)

2008年(1)

我的朋友

分类: C/C++

2010-11-08 15:13:02

1、  概要

软件一般都有维护自己的日志,日志有一下几个作用:

Ø         通过查看日志,了解软件正在执行的操作,这一功能可以用于调试;

Ø         当软件发生错误时,可以从日志中找出错误原因。

软件完善日志功能和日志库工具是两个不同的概念,前者需要程序员考虑所有可能的异常情况,并将其捕获然后写进日志,而后者是这一过程中的工具。

本文将要介绍的是一款linux下用于C++的日志库:log4cplus

 

2、  安装与配置

安装

#tar –jxvf  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个等级的信息:DEBUGINFOWARNINGERRORFATAL

Ø         日志内容形式为:DEBUG   Enter the main function

Ø         并且对日志文件名没有进行规定。

本文的实例对log4提供的日志函数进行了封装,最终增加的功能如下:

Ø         日志文件名形式:2009-10-10.txt

Ø         日志内容形式:DEBUG  [2009-10-10 10:12:34]  

Ø         自定义写日志接口函数形式:writelog("TRACE",” Enter the main function”);

 

#include

#include

#include

#include

#include

#include

#include

#include

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

 

from:http://blog.csdn.net/braveyly/archive/2009/12/25/5076481.aspx

阅读(1679) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-09 16:24:06

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com