C++ log4cpp使用(轉)


參考文章:

1、常用C++庫(1)日志庫 https://blog.csdn.net/qilimi1053620912/article/details/87378707

2、一步步入門log4cpp https://www.cnblogs.com/happyamyhope/p/6872485.html

3、中文文檔:便利的開發工具-log4cpp快速使用指南

使用測試:

下載源代碼后用cmake生成vs2017工程,然后就可以編譯為log4cpp.lib靜態庫。也可以用自帶的msvc工程編譯(默認win32,比較麻煩),里面有各種例子和編譯為靜態庫,動態庫

我用生成的vs2017工程編譯后的靜態庫在使用時無法使用配置文件方式,可能是編譯有問題,暫未找到原因,只能在代碼中配置布局,參照上面兩位的demo

//FileAppenderExam
#include <iostream>
#include <log4cpp/Category.hh>
#include <log4cpp/Appender.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/Priority.hh>
#include <log4cpp/PatternLayout.hh>
#include <log4cpp/RollingFileAppender.hh>

using namespace std;

// 本示例對同一個category root以不同的布局layout分別輸出到兩個appender

// 注意:
// 配置文件的形式在這里無法使用,只能手動在代碼里面配置
// log4cpp::PropertyConfigurator::configure(initfilename);

int main(int argc, char* argv[])
{
    log4cpp::PatternLayout* pLayout1 = new log4cpp::PatternLayout();//創建一個Layout;
    pLayout1->setConversionPattern("%d: %p %c %x: %m%n");            //指定布局格式;

    // %p:級別,%d:日期,%c:生產者標志,%m%n:內容
    log4cpp::PatternLayout* pLayout2 = new log4cpp::PatternLayout();
    pLayout2->setConversionPattern("[%p] %d{%Y-%m-%d %H:%M:%S.%l} (%c): %m%n"); // [%p] %d{%H:%M:%S.%l} (%c): %m%n

    log4cpp::Appender* fileAppender = new log4cpp::FileAppender("fileAppender", "wxb.log");//創建一個Appender;
    fileAppender->setLayout(pLayout1);//將指定的Layout添加到Appender;

    log4cpp::RollingFileAppender* rollfileAppender = new log4cpp::RollingFileAppender(
        "rollfileAppender", "rollwxb.log", 5 * 1024, 1); // 超過5k自動回滾,最大文件數為1
    rollfileAppender->setLayout(pLayout2);

    log4cpp::Category& root = log4cpp::Category::getRoot().getInstance("RootName");//從系統中得到Category的根;
    root.addAppender(fileAppender);//將Appender添加到Category;
    root.addAppender(rollfileAppender);
    root.setPriority(log4cpp::Priority::DEBUG);//設置Category的優先級;

    //開始記錄日志;
    for (int i = 0; i < 100; i++)
    {
        string strError;
        ostringstream oss;
        oss << i << ":Root Error Message!";
        strError = oss.str();
        root.error(strError);
    }

    log4cpp::Category::shutdown();//關閉Category;

    return 0;

}

上面的代碼分別寫入兩個日志文件,一個追加,一個回滾。

基本概念和用法了解后就可以參照示例自己封裝一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM