c语言中log的用法指导_第1页
c语言中log的用法指导_第2页
c语言中log的用法指导_第3页
c语言中log的用法指导_第4页
c语言中log的用法指导_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——c语言中log的用法指导c语言中log的用法指导

C语言是一门实践性和动手才能要求很高的大学主干课程,但是C语言测验课的教学一向不受重视,教学效果也不太梦想。下面我就跟你们细致介绍下c语言中log的用法的用法,梦想对你们有用。

Log4c中有三个重要的概念,Category,Appender,Layout。

Category用于区分不同的Logger,其实它就是个logger。在一个程序中我们可以通过Category来指定好多的Logger,用于不同的目的。

Appdender用于描述输出流,通过为Category来指定一个Appdender,可以抉择将log信息来输出到什么地方去,譬如stdout,stderr,文件,或者是socket等等

Layout用于指定日志信息的格式,通过为Appender来指定一个Layout,可以抉择log信息以何种格式来输出,譬如是否有带有时间戳,是否包含文件位置信息等,以及他们在一条log信息中的.输出格式的等。

转载请注明出处:/fdl19881/article/details/8192363

例子:

系统:ubuntu12.10.

打定:

安装log4c库,sudoapt-getinstallliblog4c-devliblog4c-doc

别的系统请百度/GOOGLE找相关编译安装当。log4c官网:/

文件:

log.hlog.c自己将log4c重新封装的函数

test-log.c测试用的主函数

log4crc配置文件xml,照着写就行

//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.

//配置文件,默认名为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

运行效果

./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!

讲解:

关于log.h,log.c封装的内容大家可以看看,用到了可变参数宏,可变参数这些。百度一下,就有好多人讲解了。这里就不说了。

log.h与log.c里面用法也很简朴

log_opencategory_name;//category_name确定得是log4crc里面已经定义的category.

关于配置文件log4crc

更繁杂的配置参见:/blog/1570013

配置文件的探寻是由LOG4C_RCPATH环境变量抉择。探寻的配置文件名为log4crc不知道能否变更,没研究过

配置文件中category的priority不知道是什么意思,,反正犹如没什么用。不管设置成什么,犹如都不影响。

环境变量:

?LOG4C_RCPATHholdsthepathtothemainlog4crcconfigurationfile#环境变量若未设置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论