C 语言简易日志库

C 语言简易日志库

#ifndef LOG_H
#define LOG_H

#include <stdio.h>


// Log Tag
#ifdef __linux__
    #define LOG_TAG_VERBOSE     "\033[97;1mVERBOSE\033[0m"
    #define LOG_TAG_DEBUG       "\033[96;1mDEBUG\033[0m"
    #define LOG_TAG_INFO        "\033[94;1mINFO\033[0m"
    #define LOG_TAG_WARNING     "\033[93;1mWARNING\033[0m"
    #define LOG_TAG_ERROR       "\033[91;1mERROR\033[0m"
#else
    #define LOG_TAG_VERBOSE     "VERBOSE"
    #define LOG_TAG_DEBUG       "DEBUG"
    #define LOG_TAG_INFO        "INFO"
    #define LOG_TAG_WARNING     "WARNING"
    #define LOG_TAG_ERROR       "ERROR"
#endif 


// enum of LOG_LEVEL
#define    LOG_LEVEL_ERROR      0
#define    LOG_LEVEL_WARNING    1
#define    LOG_LEVEL_INFO       2
#define    LOG_LEVEL_DEBUG      3
#define    LOG_LEVEL_VERBOSE    4


// Default LOG_LEVEL
#ifndef LOG_LEVEL
    #define LOG_LEVEL LOG_LEVEL_INFO
#endif // LOG_LEVEL


#if LOG_LEVEL >= LOG_LEVEL_VERBOSE
    #define VERBOSE(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_VERBOSE "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
#else
    #define VERBOSE(fmt, ...)
#endif

#if LOG_LEVEL >= LOG_LEVEL_DEBUG
    #define DEBUG(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_DEBUG "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
#else
    #define DEBUG(fmt, ...)
#endif

#if LOG_LEVEL >= LOG_LEVEL_INFO
    #define INFO(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_INFO "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
#else
    #define INFO(fmt, ...)
#endif

#if LOG_LEVEL >= LOG_LEVEL_WARNING
    #define WARNING(fmt, ...) fprintf(stdout, "[%s:%d][" LOG_TAG_WARNING "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
#else
    #define WARNING(fmt, ...)
#endif

#if LOG_LEVEL >= LOG_LEVEL_ERROR
    #define ERROR(fmt, ...) fprintf(stderr, "[%s:%d][" LOG_TAG_ERROR "]: " fmt, __FILE__, __LINE__, ##__VA_ARGS__)
#else
    #define ERROR(fmt, ...)
#endif

#endif // LOG_H
作者: PlanC
2024-12-18 21:18:31+08:00