C++オープンソースログライブラリlog 4 cplus


転載は文章に出典を明記してください.http://blog.csdn.net/jmppok/article/details/17357073
1.ログの重要性
コンピュータ技術の進歩と発展に伴い、コンピューティングの重心はクライアントからサービス側に移行し始め、サービス向け、並列コンピューティング、クラウドコンピューティングなどの応用モデルが現れ、バックグラウンドサービス側はますます仕事を引き受け始め、運行するアプリケーションもますます複雑になっている.バックグラウンド・サービス・エンド・アプリケーションとしては、問題が発生した場合に追跡と位置決めを向上させるために、何らかの方法で稼働状況を監視する必要があります.これには、強力なログシステムが必要です.ログ・システムは、現在のサービス・エンド・アプリケーションにおいて不可欠な重要なモジュールとなっていると言える.
2.有名なLog 4 j
ログシステムといえば、有名なLog 4 j、特にJavaを使っている人たちは、誰も知らない人はいないと言えます.Log 4 jはその簡単な使い方(1つのjarパッケージを導入して、1行のコードで呼び出すことができる)、柔軟(プロファイルを通じて自由に構成できる)、機能が強く(複数のレベル、複数の出力先を構成できる、Console、File、システムログ、遠隔のLogServerなど、ログフォーマットをカスタマイズできる、自動的に生成する、ログファイルを削除する)などの特性で、Javaログシステムの第一選択です.
3.Log 4 jのC++バージョンLog 4 cplus
上で述べたように、ログは今のシステムでは欠かせません.Javaには強力なLog 4 jが使用できますが、最も重要な言語の一つとなっているC++としてはどんな選択肢がありますか.
幸いなことに、いくつかの牛はずっと前からこの問題を発見して、彼らはLog 4 Jに倣って、C++言語を使って1セットのログシステムLog 4 cplusを開発して、Log 4 cplusの目的はとても明確で、C++版のLog 4 jを作ります.そして最も重要なのはLog 4 cplusがオープンソースであることです.
4.使用概要
1)ダウンロードhttp://sourceforge.net/projects/log4cplus/
2)Log 4 jはC++ライブラリであり,コンパイル後に利用できる.同時にlog 4 cplusはwindowsとlinuxをサポートします:
      Windows下:ルートディレクトリの下のmsvc 10の下のvsプロジェクトを開き、コンパイルすればいいです.
      Linuxの下:configure,make
3)使用
   a)最も簡単な使い方
#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-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)構成
Log 4 cplusの構成は基本的にlog 4 Jと同じである.次に例を示します
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