linux下的log4cplus的安装和使用

linux下的log4cplus的安装和使用

log4cplus是一款优秀的基于C/C++的开源日志库。log4cplus具有线程安全,不用但心在多线程状态下写日志问题;使用灵活,可通过配置文件设置日志级别下输出位置,还可以在程序运行时动态设置日志输出级别,随心所欲掌控日志的输出;以及多粒度控制的特点。通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期;可以选择将信息输出到屏幕、文件、NT event log、甚至是远程服务器;通过指定策略对日志进行定期备份。可以满足大部分开发者对日志系统需求,功能全面。

下载地址:http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/

tar -xjf log4cplus-1.0.4.tar.bz2(解压缩),切换到解压缩路径下

安装:./configure;make;make install

这里已经安装成功,默认的路径lib库路径是/usr/local/lib/,头文件的位置:/usr/local/include/log4cplus

/usr/local/lib下的和log4cplus相关的库都拷贝到/usr/lib,将头文件加到/etc/profile下的CPLUS_INCLUDE_PATH

 

这里要强调是使用log4cplus时,要加上-llog4cplus -lrt -lpthread -lrt(或者 -llog4cplus -lpthread ),才能顺利的编译通过和使用;

 

 

 

 

 

确保你的Makefile中包含 /usr/local/lib/liblog4cplus.a(静态库)或-llog4cplus(动态库)即可。

 

头文件在/usr/local/include/log4cplus目录下。

 

对于动态库,要想正常使用,还得将库安装路径加入到 LD_LIBRARY_PATH 中,以管理员身份登录,在/etc/ld.so.conf中加入安装路径,这里是/usr/local/lib,然后执行 ldconfig使设置生效即可。

 

 

 

在其log4cplus官网http://log4cplus.sourceforge.net/codeexamples.html 里面自带的三个例程。

 

 

 

 

 

 

 

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

配置

#ewindowsxport 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]  Enter the main function

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

 

#include <log4cplus/logger.h>

#include <log4cplus/configurator.h>

 #include "log4cplus/loggingmacros.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(&lt);

char* timetemp=ctime(&lt);

*(timetemp+strlen(timetemp)-1)='\0';

char temp[10000];

sprintf(temp,"[%s] %s",timetemp,info);

        printf("temp==%s",temp);

printf("leval====%s ",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(&lt);

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值