zoukankan      html  css  js  c++  java
  • (转)在Linux上的使用开源C++日志库 log4cplus

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

    非常棒的中文文档:
    (可直接去人家的分类里有列表:http://www.cppblog.com/tx7do/category/1516.html
    开源日志系统log4cplus(一)

    开源日志系统log4cplus(二)

    开源日志系统log4cplus(三)

    开源日志系统log4cplus(四)

    开源日志系统log4cplus(五)

    开源日志系统log4cplus(六)

    开源日志系统log4cplus(七)   

    如果上面的链接是正常的,下面的内容别不看了浪费时间


    1.简 介

        log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。

        log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期;你可以选择将信息输出到屏幕、文件、NT event log、甚至是远程服务器;通过指定策略对日志进行定期备份等等。
     
    2.下 载

    最新的log4cplus可以从以下网址下载。
    log4cplus:http://sourceforge.net/projects/log4cplus/

    3.安 装

    #tar xvzf log4cplus-1.0.4-rc10.tar.gz
    #cd log4cplus-1.0.4-rc10
    #./configure --prefix=/usr/local
    #make
    #make install
    安装成功会在/usr/local/lib下看到 liblog4cplus.a,在/usr/local/include下有个liblog4cplus文件夹

    4.配 置

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

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

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

    5.运行测试程序
    直接运行源码包中tests目录下的测试程序

    6.log4cplus内容介绍
    1.log4cplus基本元素
        Layouts       :控制输出消息的格式。
        Appenders  :输出位置。
        Logger        :日志对象。
        Priorities      :优先权,包括TRACE, DEBUG, INFO, WARNING, ERROR, FATAL。


    2.log4cplus基本结构

    3. 使用步骤:
        a.) 生成Appender对象。
        b.) 生成Layout对象,并绑定到Appender。(可选)
        c.) 生成Logger对象。
        d.) 设置Logger优先级。(可选)
        e.) 将需要关联Logger的Appender添加到Logger上。
        f.) 使用Logger输出信息,所有大于设定的优先级的信息,并在所有挂接在该Logger对象上的Appender上以相应的Layout设定的格式显示出来。
     
    4. Logger对象
    Logger对象具有层次结构,按名称区分,如下代码:   
    Logger test = Logger::getInstance("test"); 
    Logger subtest = Logger::getInstance("test.subtest");
        对象subtest是test的子对象。
     
    5. 优先级
        log4cplus优先级有低到高:
        NOT_SET_LOG_LEVEL :接受缺省的LogLevel,如果有父logger则继承它的LogLevel
        ALL_LOG_LEVEL :开放所有log信息输出
        TRACE_LOG_LEVEL :开放trace信息输出(即ALL_LOG_LEVEL)
        DEBUG_LOG_LEVEL :开放debug信息输出
        INFO_LOG_LEVEL  :开放info信息输出
        WARN_LOG_LEVEL  :开放warning信息输出
        ERROR_LOG_LEVEL :开放error信息输出
        FATAL_LOG_LEVEL :开放fatal信息输出
        OFF_LOG_LEVEL :关闭所有log信息输出
     
        各个logger可以通过setLogLevel设置自己的优先级,当某个logger的LogLevel设置成NOT_SET_LOG_LEVEL时,该logger会继承父logger的优先级,另外,如果定义了重名的多个logger, 对其中任何一个的修改都会同时改变其它logger。
     
    6.Layout格式输出
    1.) SimpleLayout
        是一种简单格式的布局器,在输出的原始信息之前加上LogLevel和一个"-"。
     
    2.) TTCCLayout
        其格式由时间,线程ID,Logger和NDC 组成。
     
    3.) PatternLayout
        是一种有词法分析功能的模式布局器,类似正则表达式。以“%”作为开头的特殊预定义标识符,将产生特殊的格式信息。
     
    (1)"%%",转义为% 。
    (2)"%c",输出logger名称,如test.subtest 。也可以控制logger名称的显示层次,比如"%c{1}"时输出"test",其中数字表示层次。
    (3)"%D",显示本地时间,比如:"2004-10-16 18:55:45",%d显示标准时间。     可以通过%d{...}定义更详细的显示格式,比如%d{%H:%M:%s}表示要显示小时:分钟:秒。大括号中可显示的
         预定义标识符如下:
         
       %a -- 表示礼拜几,英文缩写形式,比如"Fri"
       %A -- 表示礼拜几,比如"Friday"
       %b -- 表示几月份,英文缩写形式,比如"Oct"
       %B -- 表示几月份,"October"
       %c -- 标准的日期+时间格式,如 "Sat Oct 16 18:56:19 2004"
       %d -- 表示今天是这个月的几号(1-31)"16"
       %H -- 表示当前时刻是几时(0-23),如 "18"
       %I -- 表示当前时刻是几时(1-12),如 "6"
       %j -- 表示今天是哪一天(1-366),如 "290"
       %m -- 表示本月是哪一月(1-12),如 "10"
       %M -- 表示当前时刻是哪一分钟(0-59),如 "59"
       %p -- 表示现在是上午还是下午, AM or PM
       %q -- 表示当前时刻中毫秒部分(0-999),如 "237"
       %Q -- 表示当前时刻中带小数的毫秒部分(0-999.999),如 "430.732"
       %S -- 表示当前时刻的多少秒(0-59),如 "32"
       %U -- 表示本周是今年的第几个礼拜,以周日为第一天开始计算(0-53),如 "41"
       %w -- 表示礼拜几,(0-6, 礼拜天为0),如 "6"
       %W -- 表示本周是今年的第几个礼拜,以周一为第一天开始计算(0-53),如 "41"
       %x -- 标准的日期格式,如 "10/16/04"
       %   X -- 标准的时间格式,如 "19:02:34"
       %y -- 两位数的年份(0-99),如 "04"
       %Y -- 四位数的年份,如 "2004"
       %Z -- 时区名,比如 "GMT"
     
    (4)"%F",输出当前记录器所在的文件名称,比如"main.cpp"
    (5)"%L",输出当前记录器所在的文件行号,比如"51"
    (6)"%l",输出当前记录器所在的文件名称和行号,比如"main.cpp:51"
    (7)"%m",输出原始信息。
    (8)"%n", 换行符。
    (9)"%p",输出LogLevel,比如"DEBUG"
    (10)"%t",输出记录器所在的线程ID,比如 "1075298944"
    (11)"%x",嵌套诊断上下文NDC (nested diagnostic context) 输出,从堆栈中弹出上下文信息,NDC可以用对不同源的log信息(同时地)交叉输出进行区分。
    (12)格式对齐,比如"%-10m"时表示左对齐,宽度是10,当然其它的控制字符也可以相同的方式来使用,比如"%-12d","%-5p"等等。
     
    7.) Appender输出位置
    (1)控制台输出
            ConsoleAppender
    (2)文件输出
            FileAppender / RollingFileAppender / DailyRollingFileAppender .
     
    FileAppender :
        实现了基本的文件操作功能,构造函数如下:
        FileAppender(filename,mode,immediateFlush);
     
    <filename > 文件名
    <mode> 文件类型,可选择的文件类型包括app,ate,binary,in,out,trunc。缺省是trunc,表示将先前文件删除。
    <immediateFlush> 缓冲刷新标志.
     
    RollingFileAppender:
    RollingFileAppender(filename,maxFileSize,maxBackupIndex,immediateFlush)
    filename       : 文件名
    maxFileSize    : 文件的最大尺寸
    maxBackupIndex : 最大记录文件数
    immediateFlush : 缓冲刷新标志
    可以根据你预先设定的大小来决定是否转储,当超过该大小,后续log信息会另存到新文件中,除了定义每个记录文件的大小之外,你还要确定在 RollingFileAppender类对象构造时最多需要多少个这样的记录文件(maxBackupIndex+1),当存储的文件数目超过 maxBackupIndex+1时,会删除最早生成的文件,保证整个文件数目等于maxBackupIndex+1 。
     
    DailyRollingFileAppender:
    DailyRollingFileAppender(filename, schedule,immediateFlush,  maxBackupIndex)

    filename       : 文件名
    schedule       : 存储频度
    immediateFlush : 缓冲刷新标志
    maxBackupIndex : 最大记录文件数
     

    DailyRollingFileAppender类可以根据你预先设定的频度来决定是否转储,当超过该频度,后续log信息会另存到新文件中,这里的频度包

    转载来源:http://myswirl.blog.163.com/blog/static /51318642201071644948257/

    添加:

    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 ),才能顺利的编译通过和使用;


    转载自:http://blog.csdn.net/astraylinux/article/details/7258835

     

  • 相关阅读:
    TextBox 只有下划线
    can't find web control library(web控件库)
    DropDownListSalesAC”有一个无效 SelectedValue,因为它不在项目列表中。
    IDE、SATA、SCSI、SAS、FC、SSD 硬盘类型
    如何打印1px表格
    CSS控制打印 分页
    Virtual Server could not open its emulated Ethernet switch driver. To fix this problem, reenable the Virtual Server Emulated Et
    Xml中SelectSingleNode方法中的xpath用法
    热带水果莫入冰箱?水果存放冰箱大法
    探索Asp.net的Postback机制
  • 原文地址:https://www.cnblogs.com/xiaouisme/p/2613908.html
Copyright © 2011-2022 走看看