c語(yǔ)言中l(wèi)og的用法指導(dǎo)_第1頁(yè)
c語(yǔ)言中l(wèi)og的用法指導(dǎo)_第2頁(yè)
c語(yǔ)言中l(wèi)og的用法指導(dǎo)_第3頁(yè)
c語(yǔ)言中l(wèi)og的用法指導(dǎo)_第4頁(yè)
c語(yǔ)言中l(wèi)og的用法指導(dǎo)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——c語(yǔ)言中l(wèi)og的用法指導(dǎo)c語(yǔ)言中l(wèi)og的用法指導(dǎo)

C語(yǔ)言是一門(mén)實(shí)踐性和動(dòng)手才能要求很高的大學(xué)主干課程,但是C語(yǔ)言測(cè)驗(yàn)課的教學(xué)一向不受重視,教學(xué)效果也不太夢(mèng)想。下面我就跟你們細(xì)致介紹下c語(yǔ)言中l(wèi)og的用法的用法,夢(mèng)想對(duì)你們有用。

Log4c中有三個(gè)重要的概念,Category,Appender,Layout。

Category用于區(qū)分不同的Logger,其實(shí)它就是個(gè)logger。在一個(gè)程序中我們可以通過(guò)Category來(lái)指定好多的Logger,用于不同的目的。

Appdender用于描述輸出流,通過(guò)為Category來(lái)指定一個(gè)Appdender,可以抉擇將log信息來(lái)輸出到什么地方去,譬如stdout,stderr,文件,或者是socket等等

Layout用于指定日志信息的格式,通過(guò)為Appender來(lái)指定一個(gè)Layout,可以抉擇log信息以何種格式來(lái)輸出,譬如是否有帶有時(shí)間戳,是否包含文件位置信息等,以及他們?cè)谝粭llog信息中的.輸出格式的等。

轉(zhuǎn)載請(qǐng)注明出處:/fdl19881/article/details/8192363

例子:

系統(tǒng):ubuntu12.10.

打定:

安裝log4c庫(kù),sudoapt-getinstallliblog4c-devliblog4c-doc

別的系統(tǒng)請(qǐng)百度/GOOGLE找相關(guān)編譯安裝當(dāng)。log4c官網(wǎng):/

文件:

log.hlog.c自己將log4c重新封裝的函數(shù)

test-log.c測(cè)試用的主函數(shù)

log4crc配置文件xml,照著寫(xiě)就行

//log.h

[cpp]viewplaincopy

01.#ifndef_LOG_H_

02.#define_LOG_H_

03.

04.#include

05.#include

06.

07.#ifdef__cplusplus

08.externC

09.

10.#endif

11.

12.#includelog4c.h

13.

14.#ifdef__cplusplus

15.

16.#endif

17.

18.#defineLOG_PRI_ERRORLOG4C_PRIORITY_ERROR

19.#defineLOG_PRI_WARNLOG4C_PRIORITY_WARN

20.#defineLOG_PRI_NOTICELOG4C_PRIORITY_NOTICE

21.#defineLOG_PRI_DEBUGLOG4C_PRIORITY_DEBUG

22.#defineLOG_PRI_TRACELOG4C_PRIORITY_TRACE

23.

24.externintlog_openconstchar*category;

25.externvoidlog_messageintpriority,constchar*fmt,...;

26.externvoidlog_traceconstchar*file,intline,constchar*func,constchar*fmt,...;

27.externintlog_close;

28.

29.#defineLOG_ERRORfmt,args...

30.log_messageLOG_PRI_ERROR,fmt,##args

31.#defineLOG_WARNfmt,args...

32.log_messageLOG_PRI_WARN,fmt,##args

33.#defineLOG_NOTICEfmt,args...

34.log_messageLOG_PRI_NOTICE,fmt,##args

35.#defineLOG_DEBUGfmt,args...

36.log_messageLOG_PRI_DEBUG,fmt,##args

37.#defineLOG_TRACEfmt,args...

38.log_trace__FILE__,__LINE__,__FUNCTION__,fmt,##args

39.

40.

41.#endif

//log.c

[cpp]viewplaincopy在CODE上查看代碼片派生到我的代碼片

01.#include

02.#include

03.#includelog.h

04.

05.

06.staticlog4c_category_t*log_category=NULL;

07.

08.intlog_openconstchar*category

09.

10.iflog4c_init==1

11.

12.return-1;

13.

14.log_category=log4c_category_getcategory;

15.return0;

16.

17.

18.voidlog_messageintpriority,constchar*fmt,...

19.

20.va_listap;

21.

22.assertlog_category!=NULL;

23.

24.va_startap,fmt;

25.log4c_category_vloglog_category,priority,fmt,ap;

26.va_endap;

27.

28.

29.voidlog_traceconstchar*file,intline,constchar*fun,

30.constchar*fmt,...

31.

32.charnew_fmt[2048];

33.constchar*head_fmt=[file:%s,line:%d,function:%s];

34.va_listap;

35.intn;

36.

37.assertlog_category!=NULL;

38.n=sprintfnew_fmt,head_fmt,file,line,fun;

39.strcatnew_fmt+n,fmt;

40.

41.va_startap,fmt;

42.log4c_category_vloglog_category,LOG4C_PRIORITY_TRACE,new_fmt,ap;

43.va_endap;

44.

45.

46.

47.intlog_close

48.

49.returnlog4c_fini;

50.

//test-log.c

[cpp]viewplaincopy在CODE上查看代碼片派生到我的代碼片

01.#include

02.#includelog.h

03.

04.intmainvoid

05.

06.log_openmycat;

07.LOG_TRACEtrace;

08.LOG_ERRORerror;

09.LOG_WARNwarn;

10.LOG_NOTICEnotice;

11.LOG_DEBUGhellolog4c!;

12.log_close;

13.return0;

14.

//配置文件,默認(rèn)名為log4crc

[html]viewplaincopy在CODE上查看代碼片派生到我的代碼片

01.

02.

03.

04.

05.

06.

07.0

08.

09.0

10.1

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

編譯命令:

[python]viewplaincopy在CODE上查看代碼片派生到我的代碼片

01.gcctest-log.clog.c-otest-log-llog4c

運(yùn)行效果

./test-log

[stdout]TRACEmycat-[file:test-log.c,line:7,function:main]trace

[stdout]ERRORmycat-error

[stdout]WARNmycat-warn

[stdout]NOTICEmycat-notice

[stdout]DEBUGmycat-hellolog4c!

講解:

關(guān)于log.h,log.c封裝的內(nèi)容大家可以看看,用到了可變參數(shù)宏,可變參數(shù)這些。百度一下,就有好多人講解了。這里就不說(shuō)了。

log.h與log.c里面用法也很簡(jiǎn)樸

log_opencategory_name;//category_name確定得是log4crc里面已經(jīng)定義的category.

關(guān)于配置文件log4crc

更繁雜的配置參見(jiàn):/blog/1570013

配置文件的探尋是由LOG4C_RCPATH環(huán)境變量抉擇。探尋的配置文件名為log4crc不知道能否變更,沒(méi)研究過(guò)

配置文件中category的priority不知道是什么意思,,反正猶如沒(méi)什么用。不管設(shè)置成什么,猶如都不影響。

環(huán)境變量:

?LOG4C_RCPATHholdsthepathtothemainlog4crcconfigurationfile#環(huán)境變量若未設(shè)置

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論