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

C++ Coder

HCP高性能計(jì)算架構(gòu),實(shí)現(xiàn),編譯器指令優(yōu)化,算法優(yōu)化, LLVM CLANG OpenCL CUDA OpenACC C++AMP OpenMP MPI

C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
  98 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
http://blog.csdn.net/eclipser1987/article/details/6904301

log4cplus是C++編寫的開源的日志系統(tǒng),功能非常全面,用到自己開發(fā)的工程中會(huì)比較專業(yè)的,:),本文介紹了log4cplus基本概念,以及如何安裝,配置。


 ### 簡(jiǎn)介 ###
log4cplus是C++編寫的開源的日志系統(tǒng),前身是java編寫的log4j系統(tǒng).受Apache Software License保護(hù)。作者是Tad E. Smith。log4cplus具有線程安全、靈活、以及多粒度控制的特點(diǎn),通過將信息劃分優(yōu)先級(jí)使其可以面向程序調(diào)試、運(yùn)行、測(cè)試、和維護(hù)等全生命周期; 你可以選擇將信息輸出到屏幕、文件、NT event log、甚至是遠(yuǎn)程服務(wù)器;通過指定策略對(duì)日志進(jìn)行定期備份等等。
 
### 下載 ###
最新的log4cplus可以從以下網(wǎng)址下載 http://log4cplus.sourceforge.net本文使用的版本為:1.0.4

 

2. windows下的配置
將"log4cplus_dll class"工程或"log4cplus_static class"工程的dsp 文件插入到你的工程中,或者直接把兩個(gè)工程編譯生成的庫以及頭文件所在目錄放到你的工程的搜索路徑中,如果你使用靜態(tài)庫,請(qǐng)?jiān)谀愕墓こ讨?project/setting/C++"的preprocessor definitions中加入LOG4CPLUS_STATIC。

進(jìn)入log4cplus-1.0.4\log4cplus-1.0.4\msvc8目錄,雙擊log4cplus.sln使用Microsoft Visual Studio 2010打開文件。

編譯生成新的動(dòng)態(tài)庫或者靜態(tài)庫:

拷貝log4cplusSD.lib(靜態(tài)庫)以及 log4cplusD.lib + log4cplusD.dll (動(dòng)態(tài)庫)

注意:使用靜態(tài)鏈接,只需要log4cplusSD.lib即可,而使用動(dòng)態(tài)鏈接,則需要log4cplusD.lib + log4cplusD.dll 2個(gè)文件。

3。具體配置

首先,將log4cplus 頭文件,拷貝到Microsoft Visual Studio 2010安裝目下的include下,如:

將,log4cplusSD.lib以及l(fā)og4cplusD.lib 拷貝到Microsoft Visual Studio 2010安裝目下的lib下,如:

將log4cplusD.dll拷貝到Microsoft Visual Studio 2010安裝目下的bin下,如:

 

4。在環(huán)境配置完成后,我們可以對(duì)具體的項(xiàng)目環(huán)境進(jìn)行配置。

我們創(chuàng)建一個(gè)控制臺(tái)項(xiàng)目,并進(jìn)行如下配置:

1。采用靜態(tài)鏈接庫:

右鍵項(xiàng)目->屬性->

加入log4cplusSD.lib

注意:才用靜態(tài)鏈接庫,可以刪除bin目錄下的log4cplusD.dll 以及l(fā)ib目錄下的log4cplusD.lib 2個(gè)文件。

 

2。采用動(dòng)態(tài)鏈接庫:

右鍵項(xiàng)目->屬性->

注意:才用動(dòng)態(tài)鏈接庫,需要bin目錄下的log4cplusD.dll 以及l(fā)ib目錄下的log4cplusD.lib 2個(gè)文件。可以刪除lib目錄下的log4cplusSD.lib 文件

 

5.編寫簡(jiǎn)單程序并測(cè)試

 

#include "stdafx.h"

#include 
<log4cplus/logger.h>
#include 
<log4cplus/configurator.h>
#include 
<iomanip>

using namespace log4cplus;

int _tmain(int argc, _TCHAR* argv[])
{
    BasicConfigurator config;
    config.configure();

    Logger logger 
= Logger::getInstance("main");
    LOG4CPLUS_WARN(logger, 
"Hello, World!");
    getchar();
    
return 0;
}

 

注意:

log4cplus官方源碼采用的“多字節(jié)字符集”,如果你項(xiàng)目采用“使用 Unicode 字符集”則可以將log4cplus字符集修改后重新生成對(duì)應(yīng)的庫文件!

以下為常用的封裝好的測(cè)試實(shí)例:

VLog.h

 

#pragma once
#ifndef VLOG_H
#define    VLOG_H

#include 
<log4cplus/logger.h>
#include 
<log4cplus/layout.h>
#include 
<log4cplus/loglevel.h>
#include 
<log4cplus/fileappender.h>
#include 
<log4cplus/consoleappender.h>

#include 
<log4cplus/helpers/loglog.h>

using namespace log4cplus;
using namespace helpers;

/**
 * 使用log4cplus
 * @param logfile 記錄的文件路徑,如“main.log”
 * @param format 格式化前綴,默認(rèn)%d [%l] %-5p : %m %n
 * @param bebug 是否打印bebug信息,默認(rèn)true
 * @param lv 設(shè)置日記級(jí)別
 * @return 
 
*/

void InitLog4cplus(
        
const wchar_t* logfile,
        
const bool console = true,
        
const bool bebug = true,
        LogLevel lv 
= DEBUG_LOG_LEVEL,
        
const wchar_t* format = L"%d : %m%n" /*%d %-5p [%c < %l] : %m %n*/
        );

/**
 * 獲得根日志
 * @return 
 
*/

Logger GetRootLogger(
void);

/**
 * 獲得子日志
 * @param child 子日志名,如,sub;sub.sub1
 * @return 
 
*/

Logger GetSubLogger(
const wchar_t* sub);

/**
 * 關(guān)閉日志系統(tǒng)
 
*/

void ShutdownLogger(void);

#endif    /* VLOG_H */


VLog.cpp

 

/************************************************************************/
/* 使用規(guī)則:                                                             */
/* 需要log4cplus動(dòng)態(tài)/靜態(tài)鏈接庫及頭文件                                      */
/* log4cplus.lib + log4cplus.dll 為動(dòng)態(tài)鏈接庫。log4cplusS.lib為靜態(tài)鏈接庫    */
/************************************************************************/
#include 
"VLog.h"

void InitLog4cplus(const wchar_t* logfile, const bool console, const bool bebug,
        LogLevel lv, 
const wchar_t* format)
/*
NOT_SET_LOG_LEVEL               (   -1) :接受缺省的LogLevel,如果有父logger則繼承它的
LogLevelALL_LOG_LEVEL           (    0) :開放所有l(wèi)og信息輸出
TRACE_LOG_LEVEL                 (    0) :開放trace信息輸出(即ALL_LOG_LEVEL)
DEBUG_LOG_LEVEL                 (10000) :開放debug信息輸出
INFO_LOG_LEVEL                  (20000) :開放info信息輸出
WARN_LOG_LEVEL                  (30000) :開放warning信息輸出
ERROR_LOG_LEVEL                 (40000) :開放error信息輸出
FATAL_LOG_LEVEL                 (50000) :開放fatal信息輸出
OFF_LOG_LEVEL                   (60000) :關(guān)閉所有l(wèi)og信息輸出
 
*/
 {
    
// 0.日志系統(tǒng)配置:設(shè)置顯示debug信息
    LogLog::getLogLog()->setInternalDebugging(bebug);


    
// 創(chuàng)建屏幕輸出Appender,不采用stderror流,不采用立刻寫入模式
    SharedAppenderPtr pappender1(new RollingFileAppender(logfile, 1024 * 1024 * 20050false));
    
// 生成的日志文件名稱,文件最大值(最小1 * 200 M),擴(kuò)展50文件個(gè)數(shù),不采用立刻寫入模式

    
// 2.實(shí)例化一個(gè)layout對(duì)象
    
// 2.1創(chuàng)建layout布局格式
    std::auto_ptr<Layout> playout1(new PatternLayout(format));

    
// 3.將layout對(duì)象綁定(attach)到appender對(duì)象
    
// pappender.setLayout(std::auto_ptr<Layout> layout);
    pappender1->setLayout(playout1);

    
// 4.Logger :記錄器,保存并跟蹤對(duì)象日志信息變更的實(shí)體,當(dāng)你需要對(duì)一個(gè)對(duì)象進(jìn)行記錄時(shí),就需要生成一個(gè)logger。
    Logger rootLogger = Logger::getRoot();

    
// 5.將appender對(duì)象綁定(attach)到logger對(duì)象,如省略此步驟,標(biāo)準(zhǔn)輸出(屏幕)appender對(duì)象會(huì)綁定到logger
    rootLogger.addAppender(pappender1);

    
if (console) {
        
// 1.Appenders :掛接器,與布局器緊密配合,將特定格式的消息輸出到所掛接的設(shè)備終端 (如屏幕,文件等等)。
        SharedAppenderPtr pappender2(new ConsoleAppender(falsefalse));
        std::auto_ptr
<Layout> playout2(new PatternLayout(format));
        pappender2
->setLayout(playout2);
        rootLogger.addAppender(pappender2);
    }


    
// 6.設(shè)置logger的優(yōu)先級(jí),如省略此步驟,各種有限級(jí)的消息都將被記錄
    rootLogger.setLogLevel(lv);
}


Logger GetRootLogger(
void{
    
return Logger::getRoot();
}


Logger GetSubLogger(
const wchar_t* sub) {
    
return Logger::getInstance(sub);
}


void ShutdownLogger(void{
    Logger::getRoot().shutdown();
}


Main.cpp

include "VLog.h"
int _tmain(int argc, _TCHAR* argv[])
{
 
// 加入log4cplus
 
// 初始化log4cplus
 InitLog4cplus(L"main.log");</p><p> // 日志對(duì)象:測(cè)試一
 log4cplus::Logger test1 = GetSubLogger(L"test1");
 
// 日志對(duì)象:測(cè)試一 第一次測(cè)試
 log4cplus::Logger test1_01 = GetSubLogger(L"test1.01");</p><p> // 類型日志記錄
 LOG4CPLUS_DEBUG(test1_01, "you can log like this :" << "hello " << 100 << '!');</p><p> // 關(guān)閉日志
 ShutdownLogger();
}

 

posted on 2012-10-19 22:54 jackdong 閱讀(1506) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++日志文件
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            老司机aⅴ在线精品导航| 久久久亚洲人| 浪潮色综合久久天堂| 欧美在线视频在线播放完整版免费观看| 亚洲毛片网站| 亚洲性感美女99在线| 午夜日韩视频| 欧美一区高清| 噜噜噜久久亚洲精品国产品小说| 久久综合网络一区二区| 亚洲高清一二三区| 亚洲日本va在线观看| 亚洲视频电影在线| 久久精品国产99国产精品澳门 | 悠悠资源网久久精品| 一区二区三区亚洲| 99精品国产一区二区青青牛奶| 亚洲午夜一区二区三区| 久久久久高清| 亚洲日本国产| 欧美亚洲一区二区在线观看| 一本一本久久| 久久亚洲春色中文字幕| 亚洲国产日韩欧美在线动漫| 亚洲天堂网在线观看| 久久久久久有精品国产| 欧美日韩精品免费观看视频| 国产欧美日韩91| 亚洲日本中文字幕免费在线不卡| 午夜精品成人在线| 亚洲精品免费电影| 久久深夜福利免费观看| 国产欧美日本| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 久久嫩草精品久久久久| 欧美午夜不卡在线观看免费| 亚洲高清视频的网址| 久久精品91久久香蕉加勒比| 亚洲精品之草原avav久久| 久久久久欧美| 国产日韩欧美三区| 亚洲欧美日韩精品在线| 最新亚洲激情| 美日韩精品视频| 激情久久五月| 久久久久久综合| 欧美一区成人| 国产日韩欧美不卡在线| 亚洲一区网站| 日韩一级免费| 欧美色图麻豆| 亚洲综合成人在线| 在线一区视频| 欧美丝袜一区二区三区| av成人老司机| 亚洲人成久久| 欧美精品在线视频| 一区二区三区日韩精品| 亚洲精品在线观看免费| 欧美精品在线视频| 亚洲一区二区视频| 一区二区高清视频| 欧美午夜视频网站| 午夜久久一区| 欧美一区二区黄色| 一区二区三区在线视频播放| 蜜桃av噜噜一区二区三区| 久久久www成人免费毛片麻豆| 国产综合香蕉五月婷在线| 免费成人你懂的| 欧美不卡激情三级在线观看| 9色精品在线| 一区二区三区精品| 国产美女扒开尿口久久久| 久久av老司机精品网站导航| 欧美一区二区三区日韩| 韩国成人精品a∨在线观看| 黄色在线成人| 欧美黑人在线观看| 欧美精品粉嫩高潮一区二区 | 国产伦精品免费视频| 久久激情综合网| 久久综合九色综合欧美就去吻| 91久久国产综合久久| 亚洲欧洲日夜超级视频| 国产精品久久久久毛片软件| 欧美在线网站| 免费日韩成人| 亚洲综合丁香| 久久影院午夜论| 亚洲视频在线视频| 久久国产一区二区| 夜夜躁日日躁狠狠久久88av| 亚洲一区二区高清视频| 在线播放豆国产99亚洲| 99成人免费视频| 国产一区二区三区av电影| 亚洲国产mv| 国产精品免费一区豆花| 亚洲第一天堂无码专区| 国产免费成人| 亚洲黄网站黄| 国产亚洲欧美另类中文| 日韩视频国产视频| 在线观看日韩av| 亚洲视频一二| 亚洲精品乱码久久久久| 久久国产福利国产秒拍| 亚洲天堂av在线免费| 美国成人直播| 久久爱另类一区二区小说| 欧美激情女人20p| 久久永久免费| 国产精品色婷婷久久58| 91久久综合| 亚洲片在线观看| 久久精品午夜| 久久精品99无色码中文字幕| 欧美日韩精品一区二区天天拍小说 | 欧美一级电影久久| 欧美激情一区二区三区不卡| 久久影视精品| 国产字幕视频一区二区| 亚洲视频网在线直播| 一区二区三区国产精品| 蜜桃久久av| 久久亚洲电影| 韩国av一区| 久久精品1区| 久久久久国色av免费看影院| 国产精品久久久一本精品| 亚洲精品偷拍| 亚洲午夜精品一区二区| 欧美日韩免费一区二区三区视频| 欧美激情网站在线观看| 一区二区三区在线不卡| 久久久久久一区二区三区| 久久综合电影一区| 久久婷婷一区| 久久视频一区| 黄色精品一区| 久久国产精品黑丝| 久久看片网站| 国产亚洲欧美色| 久久精品一区二区三区四区 | 亚洲欧美国产三级| 欧美亚洲一区三区| 国产真实乱偷精品视频免| 欧美一区二区成人| 免费在线观看成人av| 亚洲精品男同| 欧美视频手机在线| 亚洲欧美第一页| 久久欧美中文字幕| 亚洲美女毛片| 国产酒店精品激情| 久久一区欧美| 亚洲精品一区二区三| 亚洲免费在线视频| 激情自拍一区| 欧美另类一区| 午夜久久影院| 欧美激情一区二区三区在线视频观看 | 久久精品国产99精品国产亚洲性色| 国产日韩欧美在线播放不卡| 欧美专区在线播放| 亚洲国产日韩在线| 午夜精品免费在线| 亚洲高清网站| 国产精品久久精品日日| 久久精品二区三区| 亚洲精品影视在线观看| 久久激情五月丁香伊人| 亚洲激情专区| 国产精品一页| 欧美精品久久一区| 欧美伊人久久大香线蕉综合69| 亚洲黄色一区二区三区| 欧美在线视频免费| 日韩一区二区高清| 好看的日韩视频| 欧美性猛交视频| 久久一区国产| 欧美亚洲专区| 99热免费精品| 亚洲福利av| 久久久人成影片一区二区三区观看| 一个色综合av| 91久久精品日日躁夜夜躁欧美| 国产欧美日韩视频一区二区三区| 欧美大成色www永久网站婷| 性色av一区二区三区在线观看| 亚洲精品三级| 亚洲国产乱码最新视频| 久热精品视频在线观看一区| 午夜精品久久久久久99热| 亚洲免费高清| 最新国产精品拍自在线播放| 黑人巨大精品欧美一区二区小视频| 欧美婷婷在线|