简易 C 日志宏

Posted on Feb 24, 2023
tl;dr: 参考实现一个在 C 程序中打印日志的宏,通过包装 printf() 实现。

klogger.h

#ifndef _SHACHI_LOGGER_H
#define _SHACHI_LOGGER_H

// \brief       : 自定义的日志宏,以供调试。
// \author      : shachi
// \email       : shachi1758@outlook.com
// \details     : 定义宏 NDEBUG 关闭。
// \version     : 0.1.0
// \log         :
//     2023-02-24 09:53:10 创建文件


// 日志模块开关
#ifndef NDEBUG

#include <time.h>
#include <stdio.h>

#define COLOR_RED "\033[1;31m"
#define COLOR_BLUE "\033[1;34m"
#define COLOR_NONE "\033[0m"

#define KINFO(fmt, args...)\
do{\
    time_t t;\
    struct tm *ti;\
    time(&t);\
    ti = localtime(&t);\
    printf("%d-%d-%d %d:%d:%d ",ti->tm_year + 1900,ti->tm_mon+1,ti->tm_mday,ti->tm_hour,ti->tm_min,ti->tm_sec);\
    printf("[%s:%d->%s] ", __FILE__,__LINE__,__func__);\
    printf(COLOR_BLUE "INFO:" COLOR_NONE);\
    printf(fmt, ##args);\
}while(0)

#define KERROR(fmt, args...)\
do{\
    time_t t;\
    struct tm *ti;\
    time(&t);\
    ti = localtime(&t);\
    printf("%d-%d-%d %d:%d:%d ",ti->tm_year + 1900,ti->tm_mon+1,ti->tm_mday,ti->tm_hour,ti->tm_min,ti->tm_sec);\
    printf("[%s:%d->%s] ", __FILE__,__LINE__,__func__);\
    printf(COLOR_RED "ERROR:" COLOR_NONE);\
    printf(fmt, ##args);\
}while(0)

// 裸机简易 LOG
#define kdebug(fmt,args...) printf (fmt ,##args)
#define kdebugX(level,fmt,args...) if (DEBUG>=level) printf(fmt,##args);

#else

#define KINFO(fmt,args...)
#define KERROR(fmt, args...)
#define kdebug(fmt,args...)
#define kdebugX(level,fmt,args...)

#endif // __KLOG

#endif // _SHACHI_LOGGER_H

留言或评论请使用 Github Issues