欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++日志庫log4cplus的使用詳解

 更新時間:2023年03月01日 10:03:04   作者:小小碼農(nóng)Come?on  
C++實現(xiàn)的log4cplus日志庫是一種易于使用的C?++日志記錄API,可提供線程安全,靈活且任意粒度的日志管理和配置控制。這篇文章就來和大家講講log4cplus的使用吧

項目中需要打印log,方便程序調(diào)試和問題定位分析。C++實現(xiàn)的log4cplus日志庫是一種易于使用的C ++日志記錄API,可提供線程安全,靈活且任意粒度的日志管理和配置控制。

下面介紹一下在linux中安裝log4cplus庫過程

下載地址:https://github.com/log4cplus/log4cplus/releases

我選擇的是比較新的版本(V2.1.0)

編譯&&安裝

下載完成在ubuntn中解壓&&編譯

(使用默認參數(shù)和路徑)

1、sudo ./configure

2、sudo make

3、sudo make install

(安裝完成后頭文件路徑默認在/usr/loca/include,庫文件路徑在/usr/local/lib)

4、把庫文件路徑加入到/etc//etc/ld.so.conf文件中然后執(zhí)行sudo ldconfig

編寫demo

測試需要四個文件,是 MyLogger.h , main.cpp , logconfig.property , CMakeLists.txt (用cmake編譯時可用) ,文件內(nèi)容如下,放入同一個文件夾進行編譯

MyLogger.h

#include <log4cplus/logger.h>
#include <log4cplus/configurator.h> 
#include <log4cplus/layout.h> 
#include <log4cplus/loggingmacros.h> 
#include <log4cplus/helpers/stringhelper.h> 

#define MY_LOG_FILE_PATH "logconfig.property"

class MyLogger
{
private:
    MyLogger()
    {
        log4cplus::initialize();
        log4cplus::PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT(MY_LOG_FILE_PATH));
        
        m_rootLog = log4cplus::Logger::getRoot();

        m_loggerYW = log4cplus::Logger::getInstance("loggerYW");
        m_loggerWJ = log4cplus::Logger::getInstance("loggerWJ");
        m_loggerUI = log4cplus::Logger::getInstance("loggerUI");     
    }
    ~MyLogger()
    {
        if (m_logger)
        {
            delete m_logger;
        }
    }


    static MyLogger* m_logger;

public:
    static MyLogger * getInstance()
    {
        if (m_logger == NULL)
        {
            m_logger = new MyLogger();
        }
        return m_logger;
        }

    log4cplus::Logger m_rootLog;
    
    log4cplus::Logger m_loggerYW;
    log4cplus::Logger m_loggerWJ;
    log4cplus::Logger m_loggerUI;

};

MyLogger* MyLogger::m_logger = NULL;

main.cpp

#include "MyLogger.h"

int main(int argc, char *argv[])
{
    MyLogger * myLoger = NULL;
    myLoger = MyLogger::getInstance();

    LOG4CPLUS_FATAL(myLoger->m_loggerYW, "DeleteService failed,errCode=[" << 2 << "]");
    LOG4CPLUS_DEBUG(myLoger->m_loggerWJ, " Service is removed");
    LOG4CPLUS_DEBUG(myLoger->m_loggerUI, " Service ");
    
    return 0;
}

logconfig.property

log4cplus.rootLogger=DEBUG,rootLogger
log4cplus.appender.rootLogger=log4cplus::RollingFileAppender  
#log4cplus.appender.rootLogger=log4cplus::ConsoleAppender
log4cplus.appender.rootLogger.MaxFileSize=100MB
log4cplus.appender.rootLogger.MaxBackupIndex=2
log4cplus.appender.rootLogger.File=rootLogger.log
log4cplus.appender.rootLogger.layout=log4cplus::PatternLayout
log4cplus.appender.rootLogger.layout.ConversionPattern=%D:%d{%Q}|%p|%t|%l|%m|%n
log4cplus.appender.rootLogger.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.rootLogger.filters.1.LogLevelMin=TRACE
log4cplus.appender.rootLogger.filters.1.LogLevelMax=FATAL
log4cplus.appender.rootLogger.filters.1.AcceptOnMatch=true
log4cplus.appender.rootLogger.filters.2=log4cplus::spi::DenyAllFilter
  
log4cplus.logger.loggerYW=DEBUG,loggerYW
log4cplus.appender.loggerYW=log4cplus::RollingFileAppender
log4cplus.appender.loggerYW.File=loggerYW.log
log4cplus.appender.loggerYW.layout=log4cplus::PatternLayout
log4cplus.appender.loggerYW.layout.ConversionPattern=%D:%d{%Q}|%p|%t|%l|%m|%n
log4cplus.appender.loggerYW.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.loggerYW.filters.1.LogLevelMin=TRACE
log4cplus.appender.loggerYW.filters.1.LogLevelMax=FATAL
log4cplus.appender.loggerYW.filters.1.AcceptOnMatch=true
log4cplus.appender.loggerYW.filters.2=log4cplus::spi::DenyAllFilter
log4cplus.appender.loggerYW.MaxFileSize=100MB
log4cplus.appender.loggerYW.MaxBackupIndex=2
log4cplus.additivity.loggerYW=false

log4cplus.logger.loggerWJ=DEBUG,loggerWJ
log4cplus.appender.loggerWJ=log4cplus::RollingFileAppender
log4cplus.appender.loggerWJ.File=loggerWJ.log
log4cplus.appender.loggerWJ.layout=log4cplus::PatternLayout
log4cplus.appender.loggerWJ.layout.ConversionPattern=%D:%d{%Q}|%p|%t|%l|%m|%n
log4cplus.appender.loggerWJ.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.loggerWJ.filters.1.LogLevelMin=TRACE
log4cplus.appender.loggerWJ.filters.1.LogLevelMax=FATAL
log4cplus.appender.loggerWJ.filters.1.AcceptOnMatch=true
log4cplus.appender.loggerWJ.filters.2=log4cplus::spi::DenyAllFilter
log4cplus.appender.loggerWJ.MaxFileSize=100MB
log4cplus.appender.loggerWJ.MaxBackupIndex=2
log4cplus.additivity.loggerWJ=false

log4cplus.logger.loggerUI=DEBUG,loggerUI
log4cplus.appender.loggerUI=log4cplus::RollingFileAppender
log4cplus.appender.loggerUI.File=loggerUI.log
log4cplus.appender.loggerUI.layout=log4cplus::PatternLayout
log4cplus.appender.loggerUI.layout.ConversionPattern=%D:%d{%Q}|%p|%t|%l|%m|%n
log4cplus.appender.loggerUI.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.loggerUI.filters.1.LogLevelMin=TRACE
log4cplus.appender.loggerUI.filters.1.LogLevelMax=FATAL
log4cplus.appender.loggerUI.filters.1.AcceptOnMatch=true
log4cplus.appender.loggerUI.filters.2=log4cplus::spi::DenyAllFilter
log4cplus.appender.loggerUI.MaxFileSize=100MB
log4cplus.appender.loggerUI.MaxBackupIndex=2
log4cplus.additivity.loggerUI=false

CMakeLists.txt

# CMake 最低版本號要求
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

# 項目名
PROJECT(LOG)

# 添加第三方的庫
SET(INC_DIR "/usr/local/include/")
SET(LINK_DIR "/usr/local/lib")

INCLUDE_DIRECTORIES(${INC_DIR})    # 設置頭文件搜索路徑
LINK_DIRECTORIES(${LINK_DIR})    #指定要鏈接的庫文件的路徑,一般不需要
# 將第三方的庫鏈接到可執(zhí)行文件,靜態(tài)鏈接
LINK_LIBRARIES(log4cplus)

# 指定源文件
SET(SRC_LIST "main.cpp")
MESSAGE(STATUS "SRC_LIST :" ${SRC_LIST})

# 指定生成目標
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC_LIST})

# 將第三方的庫鏈接到可執(zhí)行文件,動態(tài)鏈接
#TARGET_LINK_LIBRARIES(${PROJECT_NAME} log4cplus)

# 安裝目標文件
SET(PROJECT_INSTALL_PREFIX "/mnt/hgfs/VM_Shared/Teselog4cplus/build/dd")
INSTALL(TARGETS ${PROJECT_NAME}
        DESTINATION ${PROJECT_INSTALL_PREFIX}
         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)

# 安裝配置文件
SET(CONFIG_INSTALL_PREFIX "/mnt/hgfs/VM_Shared/Teselog4cplus/build")        
INSTALL(FILES logconfig.property
        DESTINATION ${CONFIG_INSTALL_PREFIX})

用cmake進行編譯

mkdir workspace //創(chuàng)建工作目錄
cd workspace && 創(chuàng)建4個新文件
mkdir build/install -p
cd build
cmake …/
make
make install

到此這篇關(guān)于C++日志庫log4cplus的使用詳解的文章就介紹到這了,更多相關(guān)C++日志庫log4cplus內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論