zlog封装(linux)

前言:

编译Linux下的C代码,需要添加调试日志,此时使用zlog进行封装。

关于zlog的源码安装可以参考文章

https://blog.csdn.net/weixin_41010318/article/details/85339456

封装相关代码

zlog.conf   配置文件

[formats]
#simple = "%m%n"
#simple = "%f:%L|%V: %m%n"

[rules]
my_cat.DEBUG >stdout;
my_cat.DEBUG "/var/log/aa.log"
#my_cat.DEBUG    >stdout; simple

zlog_api.h

#include "zlog.h"

#define ESC_START       "\033["
#define ESC_END         "\033[0m"
#define COLOR_FATAL     "31;40;5m"
#define COLOR_ALERT     "31;40;1m"
#define COLOR_CRIT      "31;40;1m"
#define COLOR_ERROR     "35;40;1m"
#define COLOR_WARN      "33;40;1m"
#define COLOR_NOTICE    "34;40;1m"
#define COLOR_INFO      "32;40;1m"
#define COLOR_DEBUG     "36;40;1m"
#define COLOR_TRACE     "37;40;1m"

extern zlog_category_t * log_category;
extern int log_init();
extern void log_fini();

#define LOG_FATAL(fmt,args...)         \
    zlog(log_category, __FILE__, sizeof(__FILE__)-1, \
    __func__, sizeof(__func__)-1, __LINE__, \
    ZLOG_LEVEL_FATAL, ESC_START COLOR_FATAL fmt ESC_END, ##args)

    
#define LOG_ERROR(fmt , args...)    \
    zlog(log_category, __FILE__, sizeof(__FILE__)-1, \
    __func__, sizeof(__func__)-1, __LINE__, \
    ZLOG_LEVEL_ERROR, ESC_START COLOR_ERROR fmt ESC_END, ##args)
    
#define LOG_WARN(fmt, args...)        \
    zlog(log_category, __FILE__, sizeof(__FILE__)-1, \
    __func__, sizeof(__func__)-1, __LINE__, \
    ZLOG_LEVEL_WARN, ESC_START COLOR_WARN fmt ESC_END, ##args)
    
#define LOG_NOTICE(fmt , args...)    \
    zlog(log_category, __FILE__, sizeof(__FILE__)-1, \
    __func__, sizeof(__func__)-1, __LINE__, \
    ZLOG_LEVEL_NOTICE, ESC_START COLOR_NOTICE fmt ESC_END, ##args)
    
#define LOG_INFO(fmt,args...)         \
    zlog(log_category, __FILE__, sizeof(__FILE__)-1, \
    __func__, sizeof(__func__)-1, __LINE__, \
    ZLOG_LEVEL_INFO, ESC_START COLOR_INFO fmt ESC_END, ##args)
    
#define LOG_DEBUG(fmt , args...)    \
    zlog(log_category, __FILE__, sizeof(__FILE__)-1, \
    __func__, sizeof(__func__)-1, __LINE__, \
    ZLOG_LEVEL_DEBUG, ESC_START COLOR_DEBUG fmt ESC_END, ##args)

zlog.c

#include <stdio.h>
#include "zlog_api.h"

zlog_category_t * log_category = NULL;

int log_init() {
    //初始化.配置文件名是固定的log.conf
    if (zlog_init("zlog.conf"))  {
        printf("Error: zlog_init\n");
    zlog_fini();
        return -1;
    }
    //找到分类,在配置文件中的category
    log_category = zlog_get_category("my_cat");
    if (!log_category) {
    printf("Error: get cat fail\n");
    zlog_fini();
    return -2;
    }
    return 0 ;
}

void log_fini() {
    zlog_fini();
}

zlog_test.c  TCP客户端

#include <stdio.h>
#include "zlog_api.h"

int main()
{
    if(log_init() != 0)
    {
        printf("log init error\n");
        return -1;
    }

    
    LOG_DEBUG("test zlog demo!\n");
    
    log_fini();
    return 0;
}

Makefile

INCS = -I/usr/local/include
CFLAGS = $(INCS) -L/usr/local/lib -lzlog -lpthread

zlog_test:zlog_test.o zlog.o
	gcc -g -Wall -o zlog_test -g zlog_test.o zlog.o $(CFLAGS)

zlog_test.o:zlog_test.c
	gcc $(INCS) -c -g -o $@ $<

zlog.o:zlog.c
	gcc $(INCS) -c -g -o $@ $<

clean:
	rm zlog.o zlog_test.o zlog_test

编译:make

执行:./zlog_test

猜你喜欢

转载自blog.csdn.net/weixin_41010318/article/details/86360243
今日推荐