簡易 C 日志宏

參考實現一個在 C 程序中打印日志的宏,通過包裝 printf() 實現。

klogger.h

#ifndef _SHACHI_LOGGER_H
#define _SHACHI_LOGGER_H

// \brief       : 自定義的日志宏,以供調試。
// \author      : shachi
// \email       : shachi1758@outlook.com

// 日志模塊開關
#ifdef __LOG

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

#define COLOR_RED "\033[1;31m"
#define COLOR_GREEN "\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_GREEN "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 debug(fmt,args...) printf (fmt ,##args)
#define debugX(level,fmt,args...) if (DEBUG>=level) printf(fmt,##args);

#else

#define KINFO(fmt,args...)
#define KERROR(fmt, args...)
#define debug(fmt,args...)
#define debugX(level,fmt,args...)

#endif // __LOG

#endif // _SHACHI_LOGGER_H

使用實例:

test.c

#include "klogger.h"

int main(int argc, const char* argv[])
{
    KINFO("%s","hello,world\n");
    KERROR("有錯誤!\n");

    return 0;

}

編譯運行:

$ gcc -o ./test -Wall -D__LOG ./test.c
$ ./test

效果如下:

參考
C語言簡單的日志宏打印
C語言如何返回格式化日期時間(格式化時間)?
C使用宏定義封裝printf實現日志功能

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容