log4cplus的包裹类(log4cplus Wrapper)

log4cplus的包裹类(log4cplus Wrapper)

头文件:

log4cplus的包裹类(log4cplus Wrapper) /**********************************************************************
log4cplus的包裹类(log4cplus Wrapper)* Copyright (C) 2008 - - All Rights Reserved
log4cplus的包裹类(log4cplus Wrapper)*
log4cplus的包裹类(log4cplus Wrapper)* 文件名称:        LoggerModule.h
log4cplus的包裹类(log4cplus Wrapper)* 摘    要:        日志包裹类,日志模块的接口
log4cplus的包裹类(log4cplus Wrapper)*     
log4cplus的包裹类(log4cplus Wrapper)* 作    者:        yanglinbo, 
log4cplus的包裹类(log4cplus Wrapper)* 修    改:        查看文件最下方.
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)**********************************************************************
*/

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)#ifndef __LoggerModule_H__
log4cplus的包裹类(log4cplus Wrapper) #define __LoggerModule_H__
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) // 导出定义
log4cplus的包裹类(log4cplus Wrapper)
#ifndef LOGGER_MODULE_CLASS
log4cplus的包裹类(log4cplus Wrapper)    #ifdef  LOGGER_MODULE_DLL
log4cplus的包裹类(log4cplus Wrapper)         #define LOGGER_MODULE_CLASS _declspec(dllexport)
log4cplus的包裹类(log4cplus Wrapper)     #else
log4cplus的包裹类(log4cplus Wrapper)         #define LOGGER_MODULE_CLASS _declspec(dllimport)
log4cplus的包裹类(log4cplus Wrapper)     #endif
log4cplus的包裹类(log4cplus Wrapper) #endif
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) // 模块定义
log4cplus的包裹类(log4cplus Wrapper)
#ifdef _DEBUG
log4cplus的包裹类(log4cplus Wrapper)     #define LOGGER_MODULE_DLL_NAME    TEXT("LoggerModuleD.dll")             // 组件 DLL 名字
log4cplus的包裹类(log4cplus Wrapper) #else
log4cplus的包裹类(log4cplus Wrapper)     #define LOGGER_MODULE_DLL_NAME    TEXT("LoggerModule.dll")             // 组件 DLL 名字
log4cplus的包裹类(log4cplus Wrapper) #endif
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) /// 包裹类
log4cplus的包裹类(log4cplus Wrapper)
/// @note 在程序启动的时候调用Logger::Start方法,例如:
log4cplus的包裹类(log4cplus Wrapper)
///       g_Logger.StartSystem("logModule.properties");
log4cplus的包裹类(log4cplus Wrapper)
///       打日志的示例如下:
log4cplus的包裹类(log4cplus Wrapper)
///       g_Logger.Debug(__FILE__, __LINE__, "Debug log[%d]", 100);
log4cplus的包裹类(log4cplus Wrapper)
///       用法基本上和printf()和CSting::Format()方法差不多。
log4cplus的包裹类(log4cplus Wrapper)
///       如果是VS2005以及以上的开发环境,可以使用宏打日志,更加方便:
log4cplus的包裹类(log4cplus Wrapper)
///       LOG_DEBUG("Debug log[%d]", 100);

log4cplus的包裹类(log4cplus Wrapper) class LOGGER_MODULE_CLASS Logger
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)public:
log4cplus的包裹类(log4cplus Wrapper)    Logger();
log4cplus的包裹类(log4cplus Wrapper)    virtual ~Logger();
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)    /// 启动日志系统
log4cplus的包裹类(log4cplus Wrapper)    
/// @param[in] properties_filename 日志系统配置文件文件名

log4cplus的包裹类(log4cplus Wrapper)    void StartSystem(const char* properties_filename);
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)    /// 关闭日志系统
log4cplus的包裹类(log4cplus Wrapper)    void StopSystem();
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)public:
log4cplus的包裹类(log4cplus Wrapper)    void Debug(const char* filename, const int fileline, const char* pFormat, log4cplus的包裹类(log4cplus Wrapper));
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)    void Error(const char* filename, const int fileline, const char* pFormat, log4cplus的包裹类(log4cplus Wrapper));
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)    void Fatal(const char* filename, const int fileline, const char* pFormat, log4cplus的包裹类(log4cplus Wrapper));
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)    void Info(const char* filename, const int fileline, const char* pFormat, log4cplus的包裹类(log4cplus Wrapper));
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)    void Warn(const char* filename, const int fileline, const char* pFormat, log4cplus的包裹类(log4cplus Wrapper));
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)    void Trace(const char* filename, const int fileline, const char* pFormat, log4cplus的包裹类(log4cplus Wrapper));
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)public:
log4cplus的包裹类(log4cplus Wrapper)    static inline Logger* getSingletonPtr()
log4cplus的包裹类(log4cplus Wrapper)    {
log4cplus的包裹类(log4cplus Wrapper)        return &getSingleton();
log4cplus的包裹类(log4cplus Wrapper)    }

log4cplus的包裹类(log4cplus Wrapper)    static inline Logger& getSingleton()
log4cplus的包裹类(log4cplus Wrapper)    {
log4cplus的包裹类(log4cplus Wrapper)        static Logger _instance; 
log4cplus的包裹类(log4cplus Wrapper)        return _instance;
log4cplus的包裹类(log4cplus Wrapper)    }

log4cplus的包裹类(log4cplus Wrapper)}
;
log4cplus的包裹类(log4cplus Wrapper) #define g_Logger Logger::getSingleton()
log4cplus的包裹类(log4cplus Wrapper) #define g_pLogger Logger::getSingleton()
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) //////////////////////////////////////////////////////////////////////////
log4cplus的包裹类(log4cplus Wrapper) //  断言日志
log4cplus的包裹类(log4cplus Wrapper)
//////////////////////////////////////////////////////////////////////////
log4cplus的包裹类(log4cplus Wrapper) #define ASSERT_LOG(expr)\
log4cplus的包裹类(log4cplus Wrapper)     if ( (expr) )  {;}  else g_Logger.Error(__FILE__, __LINE__, #expr);
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) //////////////////////////////////////////////////////////////////////////
log4cplus的包裹类(log4cplus Wrapper) //  以下的宏只有VS2005以及之上的版本可以使用!因为VS2005之下的版本不支持可变参数宏
log4cplus的包裹类(log4cplus Wrapper)
//////////////////////////////////////////////////////////////////////////
log4cplus的包裹类(log4cplus Wrapper) #if defined(_MSC_VER) && _MSC_VER > 1400 
log4cplus的包裹类(log4cplus Wrapper)     #define LOG_DEBUG( log4cplus的包裹类(log4cplus Wrapper))    g_Logger.Debug(__FILE__, __LINE__, __VA_ARGS__);
log4cplus的包裹类(log4cplus Wrapper)     #define LOG_ERROR( log4cplus的包裹类(log4cplus Wrapper))    g_Logger.Error(__FILE__, __LINE__, __VA_ARGS__);
log4cplus的包裹类(log4cplus Wrapper)     #define LOG_FATAL( log4cplus的包裹类(log4cplus Wrapper))    g_Logger.Fatal(__FILE__, __LINE__, __VA_ARGS__);
log4cplus的包裹类(log4cplus Wrapper)     #define LOG_INFO( log4cplus的包裹类(log4cplus Wrapper))    g_Logger.Info(__FILE__, __LINE__, __VA_ARGS__);
log4cplus的包裹类(log4cplus Wrapper)     #define LOG_WARN( log4cplus的包裹类(log4cplus Wrapper))    g_Logger.Warn(__FILE__, __LINE__, __VA_ARGS__);
log4cplus的包裹类(log4cplus Wrapper)     #define LOG_TRACE( log4cplus的包裹类(log4cplus Wrapper))    g_Logger.Trace(__FILE__, __LINE__, __VA_ARGS__);
log4cplus的包裹类(log4cplus Wrapper) #endif
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) #endif
log4cplus的包裹类(log4cplus Wrapper)



cpp文件:

log4cplus的包裹类(log4cplus Wrapper) /**********************************************************************
log4cplus的包裹类(log4cplus Wrapper)* Copyright (C) 2008 -  - All Rights Reserved
log4cplus的包裹类(log4cplus Wrapper)*
log4cplus的包裹类(log4cplus Wrapper)* 文件名称:        LoggerModule.cpp
log4cplus的包裹类(log4cplus Wrapper)* 摘    要:        日志包裹类,日志模块的接口
log4cplus的包裹类(log4cplus Wrapper)*     
log4cplus的包裹类(log4cplus Wrapper)* 作    者:        yanglinbo, 
log4cplus的包裹类(log4cplus Wrapper)* 修    改:        查看文件最下方.
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)**********************************************************************
*/

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)#include "LoggerModule.h"
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)#include <cstdlib>
log4cplus的包裹类(log4cplus Wrapper)#include <iostream>
log4cplus的包裹类(log4cplus Wrapper)#include <log4cplus/config.hxx>
log4cplus的包裹类(log4cplus Wrapper)#include <log4cplus/logger.h>
log4cplus的包裹类(log4cplus Wrapper)#include <log4cplus/configurator.h>
log4cplus的包裹类(log4cplus Wrapper)#include <log4cplus/helpers/loglog.h>
log4cplus的包裹类(log4cplus Wrapper)#include <log4cplus/helpers/stringhelper.h>
log4cplus的包裹类(log4cplus Wrapper)#include <log4cplus/helpers/socket.h>
log4cplus的包裹类(log4cplus Wrapper)#include <log4cplus/helpers/threads.h>
log4cplus的包裹类(log4cplus Wrapper)#include <log4cplus/spi/loggerimpl.h>
log4cplus的包裹类(log4cplus Wrapper)#include <log4cplus/spi/loggingevent.h>
log4cplus的包裹类(log4cplus Wrapper) // #include <stdarg.h>
log4cplus的包裹类(log4cplus Wrapper)

log4cplus的包裹类(log4cplus Wrapper)Logger::Logger()
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)Logger::~Logger()
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)    log4cplus::Logger _logger = log4cplus::Logger::getRoot();
log4cplus的包裹类(log4cplus Wrapper)    LOG4CPLUS_INFO(_logger, "Logger System Stop Finish.");
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) #define DO_LOGGER(logLevel, filename, fileline, pFormat, bufSize)\
log4cplus的包裹类(log4cplus Wrapper)    log4cplus::Logger _logger = log4cplus::Logger::getRoot();\
log4cplus的包裹类(log4cplus Wrapper)    \
log4cplus的包裹类(log4cplus Wrapper)     if(_logger.isEnabledFor(logLevel))\
log4cplus的包裹类(log4cplus Wrapper) {                \
log4cplus的包裹类(log4cplus Wrapper)    va_list args;            \
log4cplus的包裹类(log4cplus Wrapper)    va_start(args, pFormat);        \
log4cplus的包裹类(log4cplus Wrapper)    char buf[bufSize] = {0};        \
log4cplus的包裹类(log4cplus Wrapper)    _vsnprintf(buf, sizeof(buf), pFormat, args);    \
log4cplus的包裹类(log4cplus Wrapper)    va_end(args);           \
log4cplus的包裹类(log4cplus Wrapper)    _logger.forcedLog(logLevel, buf, filename, fileline); \
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) void Logger::Debug(  const  char* filename,  const  int fileline,  const  char* pFormat,  log4cplus的包裹类(log4cplus Wrapper) )
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)    DO_LOGGER(log4cplus::DEBUG_LOG_LEVEL, filename, fileline, pFormat, 1024);
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) void Logger::Error(  const  char* filename,  const  int fileline,  const  char* pFormat,  log4cplus的包裹类(log4cplus Wrapper) )
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)    DO_LOGGER(log4cplus::ERROR_LOG_LEVEL, filename, fileline, pFormat, 256);
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) void Logger::Fatal(  const  char* filename,  const  int fileline,  const  char* pFormat,  log4cplus的包裹类(log4cplus Wrapper) )
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)    DO_LOGGER(log4cplus::FATAL_LOG_LEVEL, filename, fileline, pFormat, 256);
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) void Logger::Info(  const  char* filename,  const  int fileline,  const  char* pFormat,  log4cplus的包裹类(log4cplus Wrapper) )
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)    DO_LOGGER(log4cplus::INFO_LOG_LEVEL, filename, fileline, pFormat, 512);
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) void Logger::Warn(  const  char* filename,  const  int fileline,  const  char* pFormat,  log4cplus的包裹类(log4cplus Wrapper) )
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)    DO_LOGGER(log4cplus::WARN_LOG_LEVEL, filename, fileline, pFormat, 256);
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) void Logger::Trace(  const  char* filename,  const  int fileline,  const  char* pFormat,  log4cplus的包裹类(log4cplus Wrapper) )
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)    DO_LOGGER(log4cplus::TRACE_LOG_LEVEL, filename, fileline, pFormat, 1024);
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) void Logger::StartSystem(  const  char* properties_filename )
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)    if (properties_filename==NULL) return;
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)    log4cplus::helpers::LogLog::getLogLog()->setInternalDebugging(false);
log4cplus的包裹类(log4cplus Wrapper)    log4cplus::PropertyConfigurator::doConfigure(properties_filename);
log4cplus的包裹类(log4cplus Wrapper)    log4cplus::Logger _logger = log4cplus::Logger::getRoot();
log4cplus的包裹类(log4cplus Wrapper)    LOG4CPLUS_INFO(_logger, "Logger System Start Finish.");
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper) void Logger::StopSystem()
log4cplus的包裹类(log4cplus Wrapper) {
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)}

log4cplus的包裹类(log4cplus Wrapper)


自定义配置文件样例:

log4cplus的包裹类(log4cplus Wrapper)# Define the root logger
log4cplus的包裹类(log4cplus Wrapper)log4cplus.rootLogger=TRACE, consoleAppender, fileAppender
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)# Define a file appender named "consoleAppender"
log4cplus的包裹类(log4cplus Wrapper)log4cplus.appender.consoleAppender=log4cplus::ConsoleAppender
log4cplus的包裹类(log4cplus Wrapper)log4cplus.appender.consoleAppender.layout=log4cplus::PatternLayout
log4cplus的包裹类(log4cplus Wrapper)log4cplus.appender.consoleAppender.layout.ConversionPattern=%-5p-[%t][%D {%H:%M:%S %Q}]%m
log4cplus的包裹类(log4cplus Wrapper)
log4cplus的包裹类(log4cplus Wrapper)# Define a file appender named "fileAppender"
log4cplus的包裹类(log4cplus Wrapper)log4cplus.appender.fileAppender=log4cplus::DailyRollingFileAppender
log4cplus的包裹类(log4cplus Wrapper)log4cplus.appender.fileAppender.MaxFileSize=200KB
log4cplus的包裹类(log4cplus Wrapper)log4cplus.appender.fileAppender.File=./log.log
log4cplus的包裹类(log4cplus Wrapper)log4cplus.appender.fileAppender.MaxBackupIndex=3
log4cplus的包裹类(log4cplus Wrapper)log4cplus.appender.fileAppender.layout=log4cplus::PatternLayout
log4cplus的包裹类(log4cplus Wrapper)log4cplus.appender.fileAppender.layout.ConversionPattern=%d {%m/%d/%y %H:%M:%S}  - %m [%l]%n
log4cplus的包裹类(log4cplus Wrapper)


使用的例子:

log4cplus的包裹类(log4cplus Wrapper)    g_Logger.StartSystem("logModule.properties");
log4cplus的包裹类(log4cplus Wrapper)    g_Logger.Debug(__FILE__, __LINE__, "Debug log[%d]", 100);


打印出来的结果如下所示:

log4cplus的包裹类(log4cplus Wrapper)06/08/09 10:52:42  - Logger System Start Finish. [e:\workspace\共享组件\日志组件\loggermodule.cpp:32]
log4cplus的包裹类(log4cplus Wrapper)06/08/09 10:52:42  - Debug log[100] [e:\workspace\服务器组件\好友服务器\friendserverdlg.cpp:160]
log4cplus的包裹类(log4cplus Wrapper)06/08/09 10:52:44  - Logger System Stop Finish. [e:\workspace\共享组件\日志组件\loggermodule.cpp:38]

你可能感兴趣的:(rap)