青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

log4cplus的包裹類(log4cplus Wrapper)

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

**********************************************************************
*/


#ifndef __LoggerModule_H__
#define __LoggerModule_H__


//導(dǎo)出定義
#ifndef LOGGER_MODULE_CLASS
    #ifdef  LOGGER_MODULE_DLL
        
#define LOGGER_MODULE_CLASS _declspec(dllexport)
    
#else
        
#define LOGGER_MODULE_CLASS _declspec(dllimport)
    
#endif
#endif

//模塊定義
#ifdef _DEBUG
    
#define LOGGER_MODULE_DLL_NAME    TEXT("LoggerModuleD.dll")            //組件 DLL 名字
#else
    
#define LOGGER_MODULE_DLL_NAME    TEXT("LoggerModule.dll")            //組件 DLL 名字
#endif


/// 包裹類
/// @note 在程序啟動(dòng)的時(shí)候調(diào)用Logger::Start方法,例如:
///       g_Logger.StartSystem("logModule.properties");
///       打日志的示例如下:
///       g_Logger.Debug(__FILE__, __LINE__, "Debug log[%d]", 100);
///       用法基本上和printf()和CSting::Format()方法差不多。
///       如果是VS2005以及以上的開發(fā)環(huán)境,可以使用宏打日志,更加方便:
///       LOG_DEBUG("Debug log[%d]", 100);

class LOGGER_MODULE_CLASS Logger
{
public:
    Logger();
    
virtual ~Logger();

    
/// 啟動(dòng)日志系統(tǒng)
    
/// @param[in] properties_filename 日志系統(tǒng)配置文件文件名

    void StartSystem(const char* properties_filename);

    
/// 關(guān)閉日志系統(tǒng)
    void StopSystem();

public:
    
void Debug(const char* filename, const int fileline, const char* pFormat, );

    
void Error(const char* filename, const int fileline, const char* pFormat, );

    
void Fatal(const char* filename, const int fileline, const char* pFormat, );

    
void Info(const char* filename, const int fileline, const char* pFormat, );

    
void Warn(const char* filename, const int fileline, const char* pFormat, );

    
void Trace(const char* filename, const int fileline, const char* pFormat, );

public:
    
static inline Logger* getSingletonPtr()
    
{
        
return &getSingleton();
    }

    
static inline Logger& getSingleton()
    
{
        
static Logger _instance; 
        
return _instance;
    }

}
;
#define g_Logger Logger::getSingleton()
#define g_pLogger Logger::getSingleton()


//////////////////////////////////////////////////////////////////////////
// 斷言日志
//////////////////////////////////////////////////////////////////////////
#define ASSERT_LOG(expr)\
    
if ( (expr) ) {;} else g_Logger.Error(__FILE__, __LINE__, #expr);


//////////////////////////////////////////////////////////////////////////
// 以下的宏只有VS2005以及之上的版本可以使用!因?yàn)閂S2005之下的版本不支持可變參數(shù)宏
//////////////////////////////////////////////////////////////////////////
#if defined(_MSC_VER) && _MSC_VER > 1400 
    
#define LOG_DEBUG()    g_Logger.Debug(__FILE__, __LINE__, __VA_ARGS__);
    
#define LOG_ERROR()    g_Logger.Error(__FILE__, __LINE__, __VA_ARGS__);
    
#define LOG_FATAL()    g_Logger.Fatal(__FILE__, __LINE__, __VA_ARGS__);
    
#define LOG_INFO()    g_Logger.Info(__FILE__, __LINE__, __VA_ARGS__);
    
#define LOG_WARN()    g_Logger.Warn(__FILE__, __LINE__, __VA_ARGS__);
    
#define LOG_TRACE()    g_Logger.Trace(__FILE__, __LINE__, __VA_ARGS__);
#endif


#endif


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

**********************************************************************
*/


#include 
"LoggerModule.h"

#include 
<cstdlib>
#include 
<iostream>
#include 
<log4cplus/config.hxx>
#include 
<log4cplus/logger.h>
#include 
<log4cplus/configurator.h>
#include 
<log4cplus/helpers/loglog.h>
#include 
<log4cplus/helpers/stringhelper.h>
#include 
<log4cplus/helpers/socket.h>
#include 
<log4cplus/helpers/threads.h>
#include 
<log4cplus/spi/loggerimpl.h>
#include 
<log4cplus/spi/loggingevent.h>
//#include <stdarg.h>

Logger::Logger()
{

}


Logger::
~Logger()
{
    log4cplus::Logger _logger 
= log4cplus::Logger::getRoot();
    LOG4CPLUS_INFO(_logger, 
"Logger System Stop Finish.");
}


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


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


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


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


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


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


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


void Logger::StartSystem( const char* properties_filename )
{
    
if (properties_filename==NULL) return;

    log4cplus::helpers::LogLog::getLogLog()
->setInternalDebugging(false);
    log4cplus::PropertyConfigurator::doConfigure(properties_filename);
    log4cplus::Logger _logger 
= log4cplus::Logger::getRoot();
    LOG4CPLUS_INFO(_logger, 
"Logger System Start Finish.");
}


void Logger::StopSystem()
{

}


自定義配置文件樣例:
# Define the root logger
log4cplus.rootLogger
=TRACE, consoleAppender, fileAppender

# Define a file appender named 
"consoleAppender"
log4cplus.appender.consoleAppender
=log4cplus::ConsoleAppender
log4cplus.appender.consoleAppender.layout
=log4cplus::PatternLayout
log4cplus.appender.consoleAppender.layout.ConversionPattern
=%-5p-[%t][%D{%H:%M:%%Q}]%m

# Define a file appender named 
"fileAppender"
log4cplus.appender.fileAppender
=log4cplus::DailyRollingFileAppender
log4cplus.appender.fileAppender.MaxFileSize
=200KB
log4cplus.appender.fileAppender.File
=./log.log
log4cplus.appender.fileAppender.MaxBackupIndex
=3
log4cplus.appender.fileAppender.layout
=log4cplus::PatternLayout
log4cplus.appender.fileAppender.layout.ConversionPattern
=%d{%m/%d/%%H:%M:%S}  - %m [%l]%n

使用的例子:
    g_Logger.StartSystem("logModule.properties");
    g_Logger.Debug(__FILE__, __LINE__, 
"Debug log[%d]"100);

打印出來的結(jié)果如下所示:
06/08/09 10:52:42  - Logger System Start Finish. [e:\workspace\共享組件\日志組件\loggermodule.cpp:32]
06/08/09 10:52:42  - Debug log[100] [e:\workspace\服務(wù)器組件\好友服務(wù)器\friendserverdlg.cpp:160]
06/08/09 10:52:44  - Logger System Stop Finish. [e:\workspace\共享組件\日志組件\loggermodule.cpp:38]




參考資料:
1. 在VC2003中編譯x264  http://203.208.35.132/search?q=cache:iVR-sSgopycJ:xieliming.blogspot.com/2008/12/vc2003x264.html+%E5%AE%8F+%E5%8F%AF%E5%8F%98%E5%8F%82+vc2003&cd=7&hl=zh-CN&ct=clnk&gl=cn&client=aff-os-maxthon&st_usg=ALhdy28fuo_AwxsIvnD2K3IRGbPD8wlJJQ
2. 我的Log4c http://www.shnenglu.com/cool-liangbing/archive/2009/02/12/73532.html
3.【原創(chuàng)】技術(shù)系列之 必備外圍功能-log http://www.shnenglu.com/CppExplore/archive/2009/02/08/52216.html

posted on 2009-06-08 20:19 楊粼波 閱讀(3200) 評(píng)論(1)  編輯 收藏 引用

評(píng)論

# re: log4cplus的包裹類(log4cplus Wrapper) 2012-08-13 16:17 yinghui12

樓主,你好。我最近在學(xué)習(xí)log4cplus庫(kù)??吹侥惴庋b的一個(gè)類。但是現(xiàn)在我遇到一些問題。出現(xiàn)很多鏈接錯(cuò)誤,但是我對(duì)應(yīng)的庫(kù)都添加了。不知道什么問題。樓主能不能給我發(fā)一下這個(gè)封裝類能夠運(yùn)行的一個(gè)工程?謝謝了。
郵箱:yinghui12@gmail.com  回復(fù)  更多評(píng)論   


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            性欧美videos另类喷潮| 久久精品视频在线| 亚洲一区二区三区国产| 亚洲欧美视频一区| 久久久亚洲国产天美传媒修理工| 麻豆精品在线视频| 欧美日韩专区| 国内精品视频在线观看| 91久久亚洲| 午夜精品久久久久久99热软件| 久久人人97超碰国产公开结果| 亚洲国产精品va在线看黑人 | 亚洲级视频在线观看免费1级| 99精品热6080yy久久 | 在线成人中文字幕| 亚洲网站在线| 久久夜色精品| 亚洲精品日本| 欧美伊人精品成人久久综合97 | 午夜精品久久久久久99热| 欧美日韩国产黄| 国产一区二区三区高清在线观看 | 在线亚洲观看| 美女精品国产| 亚洲福利视频二区| 性8sex亚洲区入口| 日韩一区二区久久| 麻豆freexxxx性91精品| 伊人久久久大香线蕉综合直播| 久久国产精品久久精品国产| 亚洲国产日韩一区| 噜噜噜躁狠狠躁狠狠精品视频 | 日韩一级网站| 欧美日本在线视频| 激情久久综艺| 先锋亚洲精品| 亚洲一区二区三区乱码aⅴ| 欧美午夜宅男影院| 亚洲精品孕妇| 久久午夜色播影院免费高清| 久久gogo国模啪啪人体图| 国产日韩欧美一区二区| 亚洲一二三级电影| 一本久久综合亚洲鲁鲁| 你懂的国产精品| 国语自产精品视频在线看8查询8 | 影音先锋亚洲精品| 欧美国内亚洲| 久久精品亚洲| 影音先锋亚洲视频| 欧美国产国产综合| 久久久久久久久一区二区| 红桃视频国产精品| 欧美成人精品在线观看| 欧美在线免费一级片| 狠狠色伊人亚洲综合网站色| 另类亚洲自拍| 欧美在线地址| 激情欧美一区| 亚洲大片av| 嫩草国产精品入口| 中国成人亚色综合网站| 亚洲人成网站在线观看播放| 免费成人美女女| 日韩视频一区二区在线观看| av不卡在线看| 欧美日韩在线一区| 欧美一区二区三区四区在线观看地址| 亚洲深夜福利视频| 国产亚洲第一区| 欧美大片免费看| 欧美日韩一区二区三区四区五区| 99国产精品久久久久久久| 一本色道久久综合狠狠躁篇怎么玩 | 欧美一区二区视频在线观看2020| 国产精品一区二区久久精品| 亚洲欧美一区二区三区极速播放| 西瓜成人精品人成网站| 国产欧美综合在线| 久久国产66| 久热re这里精品视频在线6| 黑人巨大精品欧美一区二区 | 久久精品青青大伊人av| 亚洲欧美在线磁力| 亚洲国产精品v| 一区二区日韩| 很黄很黄激情成人| 亚洲激情欧美激情| 欧美午夜精品一区二区三区| 久久电影一区| 欧美精品激情在线观看| aa级大片欧美三级| 一区二区免费在线观看| 黄色在线一区| 9国产精品视频| 一区二区三区在线观看视频 | 国产视频观看一区| 亚洲精品激情| 国内精品一区二区三区| 亚洲久久一区| 伊人久久综合97精品| 亚洲视频精品在线| 亚洲国产mv| 亚洲欧美日韩综合一区| 亚洲免费电影在线| 久久爱www.| 亚洲欧洲日韩在线| 亚洲欧美一区在线| 一本久久精品一区二区| 久久精品亚洲热| 亚洲综合欧美日韩| 久久久精品日韩欧美| 亚洲欧美在线一区二区| 欧美r片在线| 久久午夜色播影院免费高清| 国产精品美女www爽爽爽| 久久久精品国产免费观看同学| 久久综合狠狠综合久久综青草 | 欧美日韩免费看| 欧美刺激午夜性久久久久久久| 国产精品日韩精品| 农村妇女精品| 国产欧美精品日韩| 一个人看的www久久| 亚洲精品视频在线观看网站| 一本久道久久综合中文字幕| 亚洲国产日韩精品| 久久精品成人一区二区三区蜜臀| 亚洲欧美日韩国产成人| 久久久久久国产精品mv| 欧美在线你懂的| 国产精品mv在线观看| 亚洲美女区一区| 91久久中文| 老巨人导航500精品| 久久久久久久网站| 国产欧美日韩精品专区| 亚洲视频1区| 亚洲午夜一区二区三区| 欧美乱大交xxxxx| 亚洲国产欧洲综合997久久| 亚洲电影免费观看高清完整版| 一区二区三区毛片| 99视频精品全部免费在线| 欧美/亚洲一区| 欧美国产三区| 亚洲福利在线看| 久久精品国产99国产精品| 久久久久久久性| 国内精品伊人久久久久av一坑| 欧美一区日本一区韩国一区| 久久九九国产精品| 国产在线拍偷自揄拍精品| 亚洲欧美在线免费| 久久国产精品一区二区三区四区| 国产精品视频一| 亚洲性感美女99在线| 日韩视频永久免费观看| 欧美高清视频在线| 毛片av中文字幕一区二区| 国产在线播精品第三| 欧美在线看片| 美女露胸一区二区三区| 国产乱码精品一区二区三区不卡 | 麻豆国产va免费精品高清在线| 欧美成人免费网| 亚洲黄色在线视频| 欧美成人精品一区| 男人的天堂亚洲在线| 亚洲国产精品va在看黑人| 蜜月aⅴ免费一区二区三区| 亚洲电影在线| 一区二区三区日韩精品视频| 另类国产ts人妖高潮视频| 欧美激情久久久久| 日韩一级黄色av| 欧美香蕉大胸在线视频观看| 亚洲在线免费观看| 久久久久久久久久久一区| 尤物九九久久国产精品的特点 | 亚洲欧美精品| 亚洲免费一级电影| 国产欧美一区二区三区在线看蜜臀 | 欧美国产乱视频| 99亚洲伊人久久精品影院红桃| 午夜精品在线| 狠狠做深爱婷婷久久综合一区| 欧美成人免费网站| 亚洲美女啪啪| 久久精品99久久香蕉国产色戒| 亚洲成人影音| 欧美日韩一二区| 欧美影院精品一区| 亚洲国产精品v| 午夜精品视频在线观看一区二区| 国产亚洲精品久久飘花| 免费视频一区| 亚洲视频香蕉人妖| 久久综合免费视频影院| 日韩视频一区二区|