例子:
系统:ubuntu12.10 .
准备:
要安装 log4c 库c语言中变量区分大小写吗,sudo apt-get install liblog4c-dev liblog4c-doc
其他系统请百度/GOOGLE查找相关编译安装。 log4c官网:
文件:
log.h log.c是一个自己重新打包log4c的函数
test-log.c 主要测试函数
log4crc 配置文件(xml,跟着就行)
//log.h
查看纯副本
01.#ifndef _LOG_H_
02.#define _LOG_H_
03.
04.#include
05.#include
06.
07.#ifdef __cplusplus
08.外部“C”
09.{
10.#endif
11.
12.#include “log4c.h”
13.
14.#ifdef __cplusplus
15.}
16.#endif
17.
18.#define LOG_PRI_ERROR LOG4C_PRIORITY_ERROR
19.#define LOG_PRI_WARN LOG4C_PRIORITY_WARN
20.#define LOG_PRI_NOTICE LOG4C_PRIORITY_NOTICE
21.#define LOG_PRI_DEBUG LOG4C_PRIORITY_DEBUG
22.#define LOG_PRI_TRACE LOG4C_PRIORITY_TRACE
23.
24.extern int log_open(const char *category);
25.extern void log_message(int priority ,const char* fmt, …);
26.extern void log_trace(const char *file , int line , const char *func, const char *fmt ,…);
27.extern int log_close();
28.
29.#define LOG_ERROR(fmt , args…)
30. log_message(LOG_PRI_ERROR, fmt, ##args)
31.#define LOG_WARN(fmt, args…)
32. log_message(LOG_PRI_WARN, fmt , ##args)
33.#define LOG_NOTICE(fmt , args…)
34. log_message(LOG_PRI_NOTICE, fmt , ##args)
35.#define LOG_DEBUG(fmt , args…)
36. log_message(LOG_PRI_DEBUG, fmt , ##args)
37.#define LOG_TRACE(fmt,args…)
38. log_trace(__FILE__ , __LINE__ , __FUNCTION__ , fmt ,##args)
39.
40.
41.#endif
//log.c
在 CODE 上查看纯副本以查看派生到我的代码切片的代码切片
01.#include
02.#include
03.#include “log.h”
04.
05.
06.静态 log4c_category_t *log_category = NULL;
07.
08.int log_open(const char *category)
09.{
10. if (log4c_init() == 1)
11. {
12. 返回 -1;
13. }
14. log_category = log4c_category_get(category);
15. 返回 0 ;
16.}
17.
18.void log_message(int priority , const char *fmt , …)
19.{
20.va_list ap;
21.
22. 断言(log_category != NULL);
23.
24.va_start(ap, fmt);
25. log4c_category_vlog(log_category , priority , fmt , ap);
26.va_end(ap);
27.}
28.
29.void log_trace(const char *file, int line, const char *fun,
30. const char *fmt , …)
31.{
32. char new_fmt[2048];
33. const char *head_fmt = “[文件:%s, 行:%d, 函数:%s]”;
34.va_list ap;
35. int n;
36.
37. 断言(log_category != NULL);
38. n = sprintf(new_fmt, head_fmt, file , line , fun);
39. strcat(new_fmt + n , fmt);
40.
41.va_start(ap , fmt);
42. log4c_category_vlog(log_category, LOG4C_PRIORITY_TRACE, new_fmt, ap);
43.va_end(ap);
44.}
45.
46.
47.int log_close()
48.{
49. 返回 (log4c_fini());
50.}
//test-log.c
在 CODE 上查看纯副本以查看派生到我的代码切片的代码切片
01.#include
02.#include “log.h”
03.
04.int main(void)
05.{
06. log_open(“mycat”);
07. LOG_TRACE(“trace”);
08. LOG_ERROR(“错误”);
09. LOG_WARN(“警告”);
10. LOG_NOTICE(“通知”);
11. LOG_DEBUG(“hello log4c!”);
12. log_close();
13. 返回 0;
14.}
//配置文件,默认名称为log4crc
在 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.
编译命令:
在 CODE 上查看纯副本以查看派生到我的代码切片的代码切片
01.gcc test-log.c log.c -o test-log -llog4c
跑步效果
./测试日志
[stdout] TRACE mycat – [file:test-log.c, line:7, function:main]trace
[stdout] 错误 mycat – 错误
[stdout] WARN mycat – 警告
[stdout] 注意 mycat – 注意
[stdout] 调试 mycat – 你好 log4c!
解释:
关于log.h和log.c包的内容,大家可以看看。使用可变参数宏和可变参数。百度,有很多人解释。这里就不说了。
log.h和log.c中的用法也很简单
log_open(“category_name”); //category_name 必须是 log4crc 中定义的类别。
关于配置文件log4crc
更复杂的配置见:
配置文件的搜索由 LOG4C_RCPATH 环境变量决定。搜索到的配置文件名为log4crc(不知道能不能改,没研究过)
不知道配置文件中category的priority是什么意思,反正好像没什么用。设置什么似乎并不重要。
环境变量:
?LOG4C_RCPATH 保存log4crc主配置文件的路径 #如果没有设置环境变量c语言中变量区分大小写吗,则在工作目录(通常是运行目录)中查找log4crc配置文件。如果设置了这个变量,那么所有使用log4c库的程序都会使用这个路径下的log4c配置文件(可以按类别区分)。
?LOG4C_PRIORITY 持有“root”类别优先级#更改root的优先级,,
?LOG4C_APPENDER 持有“root”类appender #更改root的appender,因为root默认不设置appender。
【C语言log使用指南】相关文章:
c语言中free的使用指南10-04
断言在 C 语言 12-03 中的用法
断言在 C 语言 10-07 中的用法
c语言中default的使用10-05
c语言中free的使用10-04
c语言中bit的使用10-04
sscanf在C语言中的使用11-17
c语言中时间函数的使用10-08
c语言中map的基本用法10-07
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 欧资源网