溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

log4cplus 日志庫(kù)使用

發(fā)布時(shí)間:2020-06-01 06:26:04 來(lái)源:網(wǎng)絡(luò) 閱讀:1847 作者:fengyuzaitu 欄目:軟件技術(shù)

1 windows環(huán)境

1.1創(chuàng)建一個(gè)日志模板

?當(dāng)前使用的版本 log4cplus-1.2.1-rc2

? ? ? ? staticbool bFirst = true;

???????? Logger_logger = Logger::getInstance(LOG4CPLUS_TEXT("thriftserver"));

???????? if(bFirst)

???????? {

?????????????????? SharedAppenderPtr_append(new RollingFileAppender(LOG4CPLUS_TEXT("thriftserver.log"),300 * 1024, 20));

?????????????????? auto_ptr<Layout>pPatternLayout(new PatternLayout("%D- %m [%l]%n"));

?????????????????? _append->setLayout(pPatternLayout);

?????????????????? _append->setName(LOG4CPLUS_TEXT("thriftserver"));

?????????????????? _logger.addAppender(_append);

?????????????????? bFirst= false;

???????? }

??????? return _logger;

?

1.2 日志攜帶時(shí)間戳

auto_ptr<Layout> pPatternLayout(newPatternLayout("%d- %m [%l]%n"));

顯示的是格林威治的時(shí)間

auto_ptr<Layout> pPatternLayout(newPatternLayout("%D- %m [%l]%n"));

顯示的是本地的時(shí)間

auto_ptr<Layout> pPatternLayout(new PatternLayout("%D{%Y-%m-%d %H:%M:%S.%q}- %m [%l]%n"));

顯示的是本地時(shí)間,并且精確到毫秒


1.3 使用例子

#include <log4cplus/loggingmacros.h>

#include <log4cplus/logger.h>

#include <log4cplus/fileappender.h>

?

#define LOGGERTAGLogger::getInstance(LOG4CPLUS_TEXT("thriftserver"))

?

log4cplus::LoggerStartSetupThrfitServerLog();

//在程序運(yùn)行的時(shí)候創(chuàng)建日志文件,調(diào)用該函數(shù)

log4cplus::Logger StartSetupThrfitServerLog()

{

???????? staticbool bFirst = true;

???????? Logger_logger = Logger::getInstance(LOG4CPLUS_TEXT("thriftserver"));

???????? if(bFirst)

???????? {

?????????????????? SharedAppenderPtr_append(new RollingFileAppender(LOG4CPLUS_TEXT("thriftserver.log"),300 * 1024, 20));

?????????????????? auto_ptr<Layout>pPatternLayout(new PatternLayout("%D- %m [%l]%n"));

?????????????????? _append->setLayout(pPatternLayout);

?????????????????? _append->setName(LOG4CPLUS_TEXT("thriftserver"));

?????????????????? _logger.addAppender(_append);

?????????????????? bFirst= false;

???????? }

??????? return _logger;

}

?

//寫日志

LOG4CPLUS_ERROR(LOGGERTAG, "can notconnect remote host,ip:”<< ip);

?

?

2 Linux環(huán)境

log4cpp編譯安裝的路徑是/opt/log4cpp

?

問(wèn)題:如何正確引入動(dòng)態(tài)庫(kù)

1.修改/etc/ld.so.conf文件,將/opt/log4cpp/lib添加到文件末尾,該文件主要被ldconfig指令用來(lái)搜索可共享的動(dòng)態(tài)鏈接庫(kù)

2.執(zhí)行ldconfig,根據(jù)修改的文件內(nèi)容,創(chuàng)建出動(dòng)態(tài)裝入程序所需的連接和緩存文件,提供給系統(tǒng)動(dòng)態(tài)庫(kù)調(diào)用

手動(dòng):

???g++ test.cpp -I/opt/log4cpp/include -L/opt/log4cpp/lib/ -llog4cpp-lpthread -o test

?

提示

test.cpp文件并沒(méi)有依賴多線程庫(kù),但是log4cpp庫(kù)依賴,所以必須在命令中指定,并且由于庫(kù)的依賴次序:前面的庫(kù)依賴后面的庫(kù),所以在log4cpp后面添加lpthread庫(kù)。如果不知道需要添加哪些庫(kù)依賴,可以參考/opt/log4cpp/bin/log4cp-config文件--libs --cflags輸出,如下提供了如何在編譯指令中添加log4cp-config

例子:

g++ test.cpp`/opt/log4cpp/bin/log4cpp-config --libs --cflags` -o maintest



修訂?

2019/8/23 日志精確顯示毫秒

?


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI