zoukankan      html  css  js  c++  java
  • 转C++日志库log4cplus使用手册

    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(&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/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(&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

  • 相关阅读:
    vue+element的el-menu组件实现路由跳转及当前项的设置
    继承与多态
    八、使用for解决简单的问题
    六、Js数组的使用方法
    五、JS操作HTML方法
    四、初步入门JS的用法
    三、html总结
    二、表格<table>的使用
    一、初步接触html,基本标签和ul、ol的用法
    运算符的分类
  • 原文地址:https://www.cnblogs.com/rosesmall/p/2470927.html
Copyright © 2011-2022 走看看