log4c日志库的用法,再封装及其完整例子

找了多篇文章,发现都讲的不怎么简明。自己摸索了下,记录如下:

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

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

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

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

例子:

系统:Ubuntu 12.10 .

准备:

安装log4c库, sudo apt-get install liblog4c-dev liblog4c-doc

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

文件:

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

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

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

//log.h

#ifndef _LOG_H_

#define _LOG_H_

#include <string.h>

#include <stdlib.h>

#ifdef __cplusplus

extern"C"

{

#endif

#include "log4c.h"

#ifdef __cplusplus

}

#endif

#define LOG_PRI_ERROR LOG4C_PRIORITY_ERROR

#define LOG_PRI_WARN LOG4C_PRIORITY_WARN

#define LOG_PRI_NOTICE LOG4C_PRIORITY_NOTICE

#define LOG_PRI_DEBUG LOG4C_PRIORITY_DEBUG

#define LOG_PRI_TRACE LOG4C_PRIORITY_TRACE

externint log_open(constchar *category);

externvoid log_message(int priority ,constchar* fmt, ...);

externvoid log_trace(constchar *file , int line , constchar *func, constchar *fmt ,...);

externint log_close();

#define LOG_ERROR(fmt , args...) \

log_message(LOG_PRI_ERROR, fmt, ##args)

#define LOG_WARN(fmt, args...) \

log_message(LOG_PRI_WARN, fmt , ##args)

#define LOG_NOTICE(fmt , args...) \

log_message(LOG_PRI_NOTICE, fmt , ##args)

#define LOG_DEBUG(fmt , args...) \

log_message(LOG_PRI_DEBUG, fmt , ##args)

#define LOG_TRACE(fmt,args...) \

log_trace(__FILE__ , __LINE__ , __FUNCTION__ , fmt ,## args)

#endif

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/175e11480745cd1561307540f0e3e7d8.html