海外直购网站建设方案书范文,网站建设哪里最便宜,临沂企业建站,书香校园网站建设项目中需要打印log#xff0c;方便程序调试和问题定位分析。C实现的log4cplus日志库是一种易于使用的C 日志记录API#xff0c;可提供线程安全#xff0c;灵活且任意粒度的日志管理和配置控制。
下面介绍一下在linux中安装log4cplus库过程
下载地址#xff1a;https://gi…项目中需要打印log方便程序调试和问题定位分析。C实现的log4cplus日志库是一种易于使用的C 日志记录API可提供线程安全灵活且任意粒度的日志管理和配置控制。
下面介绍一下在linux中安装log4cplus库过程
下载地址https://github.com/log4cplus/log4cplus/releases 我选择的是比较新的版本V2.1.0
编译安装
下载完成在ubuntn中解压编译 使用默认参数和路径 1、sudo ./configure 2、sudo make 3、sudo make install 安装完成后头文件路径默认在/usr/loca/include,库文件路径在/usr/local/lib 4、把库文件路径加入到/etc//etc/ld.so.conf文件中然后执行sudo ldconfig
编写demo
测试需要四个文件是 MyLogger.h , main.cpp , logconfig.property , CMakeLists.txt 用cmake编译时可用 文件内容如下放入同一个文件夹进行编译
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.propertyclass 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.hint 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.rootLoggerDEBUG,rootLogger
log4cplus.appender.rootLoggerlog4cplus::RollingFileAppender
#log4cplus.appender.rootLoggerlog4cplus::ConsoleAppender
log4cplus.appender.rootLogger.MaxFileSize100MB
log4cplus.appender.rootLogger.MaxBackupIndex2
log4cplus.appender.rootLogger.FilerootLogger.log
log4cplus.appender.rootLogger.layoutlog4cplus::PatternLayout
log4cplus.appender.rootLogger.layout.ConversionPattern%D:%d{%Q}|%p|%t|%l|%m|%n
log4cplus.appender.rootLogger.filters.1log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.rootLogger.filters.1.LogLevelMinTRACE
log4cplus.appender.rootLogger.filters.1.LogLevelMaxFATAL
log4cplus.appender.rootLogger.filters.1.AcceptOnMatchtrue
log4cplus.appender.rootLogger.filters.2log4cplus::spi::DenyAllFilterlog4cplus.logger.loggerYWDEBUG,loggerYW
log4cplus.appender.loggerYWlog4cplus::RollingFileAppender
log4cplus.appender.loggerYW.FileloggerYW.log
log4cplus.appender.loggerYW.layoutlog4cplus::PatternLayout
log4cplus.appender.loggerYW.layout.ConversionPattern%D:%d{%Q}|%p|%t|%l|%m|%n
log4cplus.appender.loggerYW.filters.1log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.loggerYW.filters.1.LogLevelMinTRACE
log4cplus.appender.loggerYW.filters.1.LogLevelMaxFATAL
log4cplus.appender.loggerYW.filters.1.AcceptOnMatchtrue
log4cplus.appender.loggerYW.filters.2log4cplus::spi::DenyAllFilter
log4cplus.appender.loggerYW.MaxFileSize100MB
log4cplus.appender.loggerYW.MaxBackupIndex2
log4cplus.additivity.loggerYWfalselog4cplus.logger.loggerWJDEBUG,loggerWJ
log4cplus.appender.loggerWJlog4cplus::RollingFileAppender
log4cplus.appender.loggerWJ.FileloggerWJ.log
log4cplus.appender.loggerWJ.layoutlog4cplus::PatternLayout
log4cplus.appender.loggerWJ.layout.ConversionPattern%D:%d{%Q}|%p|%t|%l|%m|%n
log4cplus.appender.loggerWJ.filters.1log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.loggerWJ.filters.1.LogLevelMinTRACE
log4cplus.appender.loggerWJ.filters.1.LogLevelMaxFATAL
log4cplus.appender.loggerWJ.filters.1.AcceptOnMatchtrue
log4cplus.appender.loggerWJ.filters.2log4cplus::spi::DenyAllFilter
log4cplus.appender.loggerWJ.MaxFileSize100MB
log4cplus.appender.loggerWJ.MaxBackupIndex2
log4cplus.additivity.loggerWJfalselog4cplus.logger.loggerUIDEBUG,loggerUI
log4cplus.appender.loggerUIlog4cplus::RollingFileAppender
log4cplus.appender.loggerUI.FileloggerUI.log
log4cplus.appender.loggerUI.layoutlog4cplus::PatternLayout
log4cplus.appender.loggerUI.layout.ConversionPattern%D:%d{%Q}|%p|%t|%l|%m|%n
log4cplus.appender.loggerUI.filters.1log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.loggerUI.filters.1.LogLevelMinTRACE
log4cplus.appender.loggerUI.filters.1.LogLevelMaxFATAL
log4cplus.appender.loggerUI.filters.1.AcceptOnMatchtrue
log4cplus.appender.loggerUI.filters.2log4cplus::spi::DenyAllFilter
log4cplus.appender.loggerUI.MaxFileSize100MB
log4cplus.appender.loggerUI.MaxBackupIndex2
log4cplus.additivity.loggerUIfalseCMakeLists.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}) #指定要链接的库文件的路径一般不需要
# 将第三方的库链接到可执行文件静态链接
LINK_LIBRARIES(log4cplus)# 指定源文件
SET(SRC_LIST main.cpp)
MESSAGE(STATUS SRC_LIST : ${SRC_LIST})# 指定生成目标
ADD_EXECUTABLE(${PROJECT_NAME} ${SRC_LIST})# 将第三方的库链接到可执行文件动态链接
#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.propertyDESTINATION ${CONFIG_INSTALL_PREFIX})用cmake进行编译 mkdir workspace //创建工作目录 cd workspace 创建4个新文件 mkdir build/install -p cd build cmake …/ make make install