• log4cplus基本用法


    说起日志系统,不得不提大名鼎鼎的Log4j。特别是使用Java的人们,能够说是无人不知无人不晓无人不用。

    Log4j以其简单的使用方式(引入一个jar包。一行代码就可以调用)。灵活(可通过配置文件任意配置),功能强大(多个级别。可配置多个输出目的地,Console,File。系统日志。远端的LogServer等等,可订制日志格式,自己主动产生,删除日志文件)等等等等特性,一直是Java日志系统的首选。

     

    1.Log4j的C++版本号Log4cplus

    上面说到,日志在如今的系统里不可缺少。Java有功能强大的Log4j能够使用,作为最重要变成语言之中的一个的C++有什么选择呢?

    幸运的是。有一些大牛非常早之前就发现了这个问题,他们仿照Log4J。使用C++语言开发了一套日志系统Log4cplus,Log4cplus的目的非常明白。打造C++版的Log4j。并且最重要的是Log4cplus是开源的。

    2.使用简单介绍

    1)下载http://sourceforge.net/projects/log4cplus/

    2)Log4j是一个C++库,编译以后就可以使用。同一时候log4cplus支持windows和linux:

          windows下:打开根文件夹下的msvc10以下的vsproject。编译就可以。

          Linux下:configure, make

    3)使用

       a)最简单的使用方式

    ?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <log4cplus/logger.h> 
    #include <log4cplus/configurator.h> 
    #include <iomanip> 
       
    using namespace log4cplus; 
       
    int 
    main() 
        BasicConfigurator config; 
        config.configure(); 
       
        Logger logger = Logger::getInstance("main"); 
        LOG4CPLUS_WARN(logger, "Hello, World!"); 
        return
    }
    b)可订制的方式
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    /*    严格实现步骤1-6,appender输出到屏幕, 当中的布局格式和LogLevel后面会详解。*/ 
    #include <log4cplus logger.h=""></log4cplus> 
    #include <log4cplus consoleappender.h=""></log4cplus> 
    #include <log4cplus layout.h=""></log4cplus>    
    using namespace log4cplus; 
    using namespace log4cplus::helpers;    
    int main(){ 
        /* step 1: Instantiate an appender object */     
        SharedObjectPtr _append (new ConsoleAppender());     
        _append->setName("append for test");    
        /* step 2: Instantiate a layout object */     
        std::string pattern = "%d{%m/%d/%y %H:%M:%S}  - %m [%l]%n";     
        std::auto_ptr _layout(new PatternLayout(pattern));    
        /* step 3: Attach the layout object to the appender */     
        _append->setLayout( _layout );    
        /* step 4: Instantiate a logger object */     
        Logger _logger = Logger::getInstance("test");    
        /* step 5: Attach the appender object to the logger  */    
        _logger.addAppender(_append);    
        /* step 6: Set a priority for the logger  */     
        _logger.setLogLevel(ALL_LOG_LEVEL);    
         /* log activity */     
        LOG4CPLUS_DEBUG(_logger, "This is the FIRST log message...")     
       sleep(1);     
       LOG4CPLUS_WARN(_logger, "This is the SECOND log message...")    
       return 0; 
    }

    4)配置

    Log4cplus配置基本与log4J同样。

    以下是一个样例

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    log4cplus.rootLogger=DEBUG, STDOUT, ALL_MSGS 
       
       
    log4cplus.appender.STDOUT=log4cplus::ConsoleAppender 
    log4cplus.appender.STDOUT.layout=log4cplus::PatternLayout 
    #log4cplus.appender.STDOUT.layout.ConversionPattern=%d{%m/%d/%y %H:%M:%S} [%t] %-5p %c{2} %%%x%% - %m [%l]%n 
    log4cplus.appender.STDOUT.layout.ConversionPattern=[%-5p %d{%y-%m-%d %H:%M:%S}] [%l]%n%m%n%n 
       
       
    #设置日志追加到文件尾 
    log4cplus.appender.ALL_MSGS=log4cplus::RollingFileAppender   
       
    #设置日志文件大小 
    log4cplus.appender.ALL_MSGS.MaxFileSize=100MB 
       
    #设置生成日志最大个数 
    log4cplus.appender.ALL_MSGS.MaxBackupIndex=10 
       
    #设置输出日志路径 
    log4cplus.appender.ALL_MSGS.File=log/test.log 
    log4cplus.appender.ALL_MSGS.layout=log4cplus::PatternLayout 
    #设置日志打印格式 
    #log4cplus.appender.ALL_MSGS.layout.ConversionPattern=|%D:%d{%Q}|%p|%t|%l|%m|%n 
    log4cplus.appender.ALL_MSGS.layout.ConversionPattern=[%-5p %d{%y-%m-%d %H:%M:%S}] [%l]%n%m%n%n 
    #匹配同样日志级别,仅仅有debug日志才输入到该文件里 
    #log4cplus.appender.ALL_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter 
    #log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelToMatch=DEBUG 
    #log4cplus.appender.DEBUG_MSGS.filters.1.AcceptOnMatch=true 
    #log4cplus.appender.DEBUG_MSGS.filters.2=log4cplus::spi::DenyAllFilter
  • 相关阅读:
    Win Server 2008 R2 一键配置全环境 PHP5+MYSQL5+ZEND+PHPMYADMIN
    服务器加固,安全狗V4.0正式版 (Windows)
    Win server 2008 R2激活工具使用图文教程(SK Patch v1 R2 Final OEM)
    Laoy8 V4.0 营销插件
    OK3W发布插件
    流量精灵(P2P方式,刷真实流量)
    aspcms2发布插件
    今天写一篇技术文章,关于TemplateEngine的。
    全面分析新浪博客的登录过程
    网站克隆插件
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6724794.html
Copyright © 2020-2023  润新知