首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

log4cplus 日誌庫安裝配置與 C++ 使用完整指南

     編輯:關於C語言

簡介

log4cplus 是 Apache log4j 的 C++ 移植版,功能全面、線程安全、靈活配置。核心優勢:**開發者可自定義日誌格式、輸出目標(控制台、文件、網絡等)、分級過濾**,避免 glog 產生海量碎片文件。

五大核心組件

組件職責常用實現
Logger日誌記錄器,業務代碼直接調用Logger::getInstance("name")
Appender輸出目的地ConsoleAppender、FileAppender、RollingFileAppender、SocketAppender
Layout輸出格式化PatternLayout (printf 風格)、TTCCLayout
Filter過濾器,決定是否輸出LogLevelMatchFilter、DenyAllFilter
Priority/Level優先級TRACE < DEBUG < INFO < WARN < ERROR < FATAL

Linux 源碼安裝

tar xvzf log4cplus-x.x.x.tar.gz
cd log4cplus-x.x.x
./configure --prefix=/usr/local/log4cplus
make
sudo make install
# 編譯鏈接需加 -llog4cplus

C++ 代碼配置範例(程序化配置)

#include <iostream>
#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>
#include <log4cplus/configurator.h>
#include <log4cplus/fileappender.h>
#include <log4cplus/consoleappender.h>
#include <log4cplus/layout.h>

using namespace std;
using namespace log4cplus;

int main()
{
    // 1. 創建 Appender (文件輸出)
    SharedObjectPtr<Appender> append(new FileAppender("master.log"));
    append->setName("append for master");

    // 2. 創建 Layout (格式: 日期 時間 級別 [logger]: 信息 換行)
    std::auto_ptr<Layout> layout(new PatternLayout(
        "%d{%m/%d/%y %H:%M:%S} %p [%l]: %m %n"));

    // 3. 綁定 Layout 到 Appender
    append->setLayout(layout);

    // 4. 獲取/創建 Logger
    Logger logger = Logger::getInstance("master");

    // 5. 綁定 Appender 到 Logger
    logger.addAppender(append);

    // 6. 設置日誌級別 (ALL 表示全部輸出)
    logger.setLogLevel(ALL_LOG_LEVEL);

    // 7. 記錄日誌 (宏自動捕獲文件/行/函數)
    LOG4CPLUS_DEBUG(logger, "This is the FIRST log message");

    return 0;
}

配置文件方式 (log4cplus.properties)

log4cplus.rootLogger=DEBUG, stdout, file

log4cplus.appender.stdout=log4cplus::ConsoleAppender
log4cplus.appender.stdout.layout=log4cplus::PatternLayout
log4cplus.appender.stdout.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} [%p] %m%n

log4cplus.appender.file=log4cplus::RollingFileAppender
log4cplus.appender.file.File=app.log
log4cplus.appender.file.MaxFileSize=10MB
log4cplus.appender.file.MaxBackupIndex=5
log4cplus.appender.file.layout=log4cplus::PatternLayout
log4cplus.appender.file.layout.ConversionPattern=%d{%Y-%m-%d %H:%M:%S} [%p] [%l] %m%n

# 代碼中一行加載: PropertyConfigurator::doConfigure("log4cplus.properties");

常用 Pattern 佔位符

符號含義
%d日期時間,支持格式如 %d{%Y-%m-%d %H:%M:%S}
%p優先級 (DEBUG/INFO/WARN...)
%l位置信息 (文件:行:函數)
%m用戶日誌信息
%n換行符
%cLogger 名稱
%t線程 ID

避坑指南

  1. 靜態鏈接運行庫 (MT) vs 動態 (MD):專案與 log4cplus 必須一致,否則運行時崩潰。
  2. 宏記錄器自動捕獲上下文:優先使用 LOG4CPLUS_DEBUG/INFO/WARN/ERROR/FATAL 宏,而非直接調用 logger.log()。
  3. RollingFileAppender 防止單文件過大:設置 MaxFileSize、MaxBackupIndex 自動分割備份。
  4. 異步 Appender:高併發場景用 AsyncAppender 解耦 I/O,降低業務線程延遲。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved