log4cplus是C++中的一个日志系统,之前有一篇文章介绍了它的配置,今天把它的使用方法列出来。
下面是包装过的类,在项目中使用这个类会很简单,只需要包含它的头文件就可以使用了,当然前提是搭建好log4cplus的环境。
自己定义的类名是Log
Log.h文件如下:
#pragma once #include "log4cplus/loglevel.h" #include "log4cplus/ndc.h" #include "log4cplus/logger.h" #include "log4cplus/configurator.h" #include "iomanip" #include "log4cplus/fileappender.h" #include "log4cplus/layout.h" using namespace log4cplus; using namespace log4cplus::helpers; //日志封装 #define TRACELOG(p) LOG4CPLUS_TRACE(Log::_logger, p) #define DEBUGLOG(p) LOG4CPLUS_DEBUG(Log::_logger, p) #define INFOLOG(p) LOG4CPLUS_INFO(Log::_logger, p) #define WARNLOG(p) LOG4CPLUS_WARN(Log::_logger, p) #define ERRORLOG(p) LOG4CPLUS_ERROR(Log::_logger, p) // 日志控制类,全局共用一个日志 class Log { public: //打开日志 bool open_log(); //获得日志实例 static Log & instance(); //全局日志对象 static Logger _logger; private: Log(); virtual ~Log(); };
Log.cpp文件如下:
#include "Log.h" CString str("DigitalImageProcess_log"); std::wstring wstr=str.GetString(); Logger Log::_logger = log4cplus::Logger::getInstance(wstr); Log::Log() { } Log::~Log() { } Log& Log::instance() { static Log log; return log; } bool Log::open_log() { log4cplus::PropertyConfigurator::doConfigure(_T("d:\\log\\log4cplus.cfg"));//将要读取的配置文件的路径 return true; } /************************************************************************/ /* log的使用方法: if (!Log::instance().open_log()) { std::cout << "Log::open_log() failed" << std::endl; } INFOLOG("Server init succ"); ERRORLOG("Server run failed"); */ /************************************************************************/
配置文件log4cplus.cfg如下:
log4cplus.rootLogger=INFO, STDOUT log4cplus.logger.DigitalImageProcess_log=INFO, R3 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.R3=log4cplus::RollingFileAppender log4cplus.appender.R3.File=d:\\log\\DigitalImageProcess_Log.log log4cplus.appender.R3.MaxFileSize=500KB log4cplus.appender.R3.MaxBackupIndex=5 log4cplus.appender.R3.layout=log4cplus::PatternLayout log4cplus.appender.R3.layout.ConversionPattern=%D{%y-%m-%d %H:%M:%S} [%l] %-5p -- %m%n
if (!Log::instance().open_log()) { std::cout << "Log::open_log() failed" << std::endl; } INFOLOG("Server init succ"); ERRORLOG("Server run failed");
13-10-11 11:12:10 [.\TestEventHandler.cpp:15] INFO -- Server init succ 13-10-11 11:12:10 [.\TestEventHandler.cpp:15] ERROR -- Server run failed
配置文件中的格式如下: