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

C++ Coder

HCP高性能計算架構,實現(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

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


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

 

### 安裝 ###
 
1. linux下安裝
tar xvzf log4cplus-x.x.x.tar.gzcd log4cplus-x.x.x./configure --prefix=/where/to/install

make

make install
這里我采用缺省安裝路徑:/usr/local,下文如無特別說明,均以此路徑為準。

查看安裝后的目錄信息:

 

2.運行l(wèi)og4cplus實例:

官方實例運行成功。

 

3。與IDE集成測試。

這里,我使用的IDE為netbeans7.0采用samba實現(xiàn)linux與windows文件共享。

netbeans環(huán)境配置如下:

 

采用動態(tài)鏈接庫

 

編寫一個簡單的main.c


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

using namespace log4cplus;

int main(void{
    BasicConfigurator config;
    config.configure();

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

WARN - Hello, World!

運行成功(總計時間: 62毫秒)

常用的封裝后的使用:

vlog.h

/* 
 * File:   vlog.h
 * Author: Vicky
 * 
 * 1.安裝log4cplus。
 * 2.C++ 編譯器 : 其他選項 -lpthread -llog4cplus
 * 3.C++ 連接器 : 運行時搜索目錄 /usr/local/lib
 * Created on 2011年12月8日, 下午1:53
 
*/


#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 格式化前綴,默認%d [%l] %-5p : %m %n
 * @param bebug 是否打印bebug信息,默認true
 * @param lv 設置日記級別
 * @return 
 
*/

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

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

Logger getRootLogger(
void);

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

Logger getSubLogger(
const char* sub);

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

void shutdownLogger(void);

#endif    /* VLOG_H */


vlog.cpp

#include "vlog.h"

void initLog4cplus(const char* logfile, const bool console, const bool bebug,
        LogLevel lv, 
const char* 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) :關閉所有l(wèi)og信息輸出
 
*/
 {
    
// 0.日志系統(tǒng)配置:設置顯示debug信息
    LogLog::getLogLog()->setInternalDebugging(bebug);


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

    
// 2.實例化一個layout對象
    
// 2.1創(chuàng)建layout布局格式
    tstring pattern = LOG4CPLUS_TEXT(format);
    std::auto_ptr
<Layout> playout1(new PatternLayout(pattern));

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

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

    
// 5.將appender對象綁定(attach)到logger對象,如省略此步驟,標準輸出(屏幕)appender對象會綁定到logger
    rootLogger.addAppender(pappender1);

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


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


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


Logger getSubLogger(
const char* sub) {
    
return Logger::getInstance(LOG4CPLUS_TEXT(sub));
}


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



main.cpp

/* 
 * File:   main.cpp
 * Author: Vicky
 *
 
*/

#include 
"vlog.h"

/*
 * 
 
*/

int main(void{

    
// 初始化log4cplus
    initLog4cplus("main.log");

    
// 日志對象:測試一
    log4cplus::Logger test1 = getSubLogger("test1");
    
// 日志對象:測試一 第一次測試
    log4cplus::Logger test1_01 = getSubLogger("test1.01");

    
// 類型日志記錄
    LOG4CPLUS_DEBUG(test1_01, "you can log like this :" << "hello " << 100 << '!');

    
// 關閉日志
    shutdownLogger();
    
return 0;
}

 

OK。unix下log4cplus的安裝,集成,測試!隨后我將講述Microsoft Visual Studio 2010下的安裝,集成,與測試。

運行時動態(tài)鏈接庫設置





posted on 2012-10-19 22:55 jackdong 閱讀(484) 評論(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>
            久久久99爱| 国内精品视频一区| 一区二区三区 在线观看视| 欧美一区二区三区久久精品茉莉花 | 久久久另类综合| 久久久久久久97| 久久人人97超碰人人澡爱香蕉| 久久爱www久久做| 久久这里有精品视频| 久久婷婷蜜乳一本欲蜜臀| 久久人人97超碰精品888| 免费成人网www| 国产精品国产三级国产普通话99| 国产精品人人做人人爽人人添| 狠狠久久亚洲欧美| 99天天综合性| 老鸭窝91久久精品色噜噜导演| 欧美激情亚洲自拍| 黄色成人在线免费| 毛片一区二区| 国产精品第13页| 影音欧美亚洲| 亚洲在线视频| 欧美激情影音先锋| 这里只有精品视频在线| 欧美一区二区日韩一区二区| 欧美国产日韩亚洲一区| 国产午夜精品理论片a级探花 | 一区二区三区高清视频在线观看| 校园春色国产精品| 欧美伦理91i| 在线观看亚洲专区| 欧美一级电影久久| 亚洲精品美女91| 99视频一区二区| 可以看av的网站久久看| 国产精品久久久一区麻豆最新章节 | 午夜电影亚洲| 亚洲高清资源| 久久久久久久一区二区| 国产精品免费看片| 夜夜爽www精品| 久久久夜精品| 夜夜爽99久久国产综合精品女不卡| 午夜精品一区二区三区电影天堂| 欧美久久久久| 美女国产一区| 午夜一区二区三视频在线观看| 欧美激情一区二区三区蜜桃视频| 国产午夜精品全部视频在线播放 | 欧美体内谢she精2性欧美| 激情五月***国产精品| 午夜影视日本亚洲欧洲精品| 亚洲精品一区二| 免费欧美日韩| 最新日韩欧美| 男女视频一区二区| 亚洲片在线资源| 欧美一区三区三区高中清蜜桃| 日韩视频中文| 欧美国产日韩一区二区| 亚洲国产欧美一区二区三区久久| 欧美在线999| 亚洲一区二区三区激情| 国产精品美女久久久浪潮软件 | 免费观看成人网| 在线观看av不卡| 久久精品麻豆| 久久久欧美精品| 亚洲国产精品电影在线观看| 嫩草成人www欧美| 久久在线免费| 亚洲日本成人| 欧美激情精品久久久| 欧美高清视频| 亚洲一区二区在线看| 一区二区成人精品 | 久久夜色精品国产欧美乱极品| 亚洲中午字幕| 国产亚洲欧美日韩精品| 欧美一级播放| 久久久久久久久久久久久久一区 | 亚洲精品综合久久中文字幕| 亚洲经典视频在线观看| 欧美日韩国产免费| 午夜一区二区三区不卡视频| 欧美在线二区| 亚洲精品一区二区三区婷婷月| 亚洲日本成人网| 国产美女精品免费电影| 老司机精品福利视频| 欧美国产日韩亚洲一区| 欧美亚洲日本网站| 久久久久久一区| 日韩视频在线播放| 亚洲欧美日韩综合国产aⅴ | 亚洲欧美激情诱惑| 狠狠色丁香久久婷婷综合丁香| 免费亚洲电影| 欧美三级视频在线| 裸体女人亚洲精品一区| 国产精品theporn| 久久先锋资源| 国产精品久久久久一区| 欧美电影美腿模特1979在线看| 国产精品v欧美精品∨日韩| 免费中文日韩| 国产精品美女在线观看| 亚洲第一页中文字幕| 国产精品夜夜夜| 亚洲国产mv| 一区二区三区在线不卡| 亚洲私拍自拍| 日韩一本二本av| 久久久久久久一区| 久久高清国产| 国产精品久久久久99| 亚洲精品国产精品国自产观看浪潮 | 国产日韩精品久久| 亚洲伦理中文字幕| 久久精品最新地址| 欧美一区二区三区播放老司机| 欧美精品xxxxbbbb| 男女激情视频一区| 尤物精品国产第一福利三区| 亚洲免费在线看| 亚洲一区二区视频| 欧美日韩免费高清| 亚洲激情网站| 亚洲精品国产精品国产自| 久久精品视频在线| 久久在线免费观看视频| 国产一区二区在线观看免费| 亚洲免费视频一区二区| 欧美精品 日韩| 亚洲精品日韩在线观看| 亚洲免费黄色| 欧美wwwwww| 亚洲欧洲三级| 国产三级精品三级| 欧美在线观看一区二区| 久久久久久久激情视频| 国内精品一区二区| 久久国产乱子精品免费女 | 国产精品久久国产精麻豆99网站| 亚洲精品一区二区在线| 亚洲午夜一级| 国产精品视频一二| 亚洲一区在线免费| 久久精品视频网| 在线精品国精品国产尤物884a| 久久综合久久88| 欧美福利影院| 一区二区三区高清在线观看| 欧美午夜www高清视频| 亚洲欧美另类在线| 美女精品一区| 中文日韩欧美| 国产有码一区二区| 欧美激情第9页| 欧美激情2020午夜免费观看| 在线天堂一区av电影| 国产伦理精品不卡| 久久网站热最新地址| 99re6这里只有精品| 久久精品官网| 亚洲精品国产精品国产自| 欧美午夜a级限制福利片| 久久国产日韩| 亚洲另类黄色| 久久亚洲精品伦理| 中文日韩在线视频| 伊人久久大香线| 欧美性一二三区| 久久久久久久久久久久久女国产乱| 亚洲国产精品视频一区| 欧美一区二区三区精品| 日韩视频在线永久播放| 黑人操亚洲美女惩罚| 欧美日韩在线不卡| 美日韩丰满少妇在线观看| 日韩一区二区久久| 久久精品国产亚洲一区二区| 国产精品日韩精品欧美精品| 亚洲欧美三级在线| 亚洲精品乱码久久久久久蜜桃91| 羞羞答答国产精品www一本| 亚洲黄色小视频| 国产视频欧美视频| 欧美色精品天天在线观看视频| 久久久久久综合| 午夜精品亚洲| 亚洲视频在线观看三级| 亚洲国产导航| 蜜桃av噜噜一区二区三区| 欧美一区三区三区高中清蜜桃| 一区二区三区高清| 亚洲理论电影网| 亚洲国产精品传媒在线观看| 国产亚洲午夜|