Files
log-for-c/README.md

2.3 KiB
Raw Blame History

Log for C

基于C23的日志库支持自动类型识别、格式化输出、颜色和日志等级。

功能说明

使用C23的 _Generic特性实现类型自动识别和格式化输出。

log() - 基础日志输出

自动判断传入参数类型并输出,支持格式化字符串。

支持的参数类型:

  • int - 整数

  • long - 长整数

  • double - 双精度浮点数

  • float - 单精度浮点数

  • char* / const char* - 字符串

  • wchar_t* / const wchar_t* - 宽字符串

  • char - 字符

    注意: C语言中字符字面量'A')的类型是 int,会被当作整数打印。如需打印字符,请使用 char类型变量或显式转换 (char)'A'

使用方式:

log(value)                    // 单个值输出
log(format, arg1)             // 一个占位符
log(format, arg1, arg2)       // 两个占位符
...                           // 最多支持10个占位符
log(format, arg1, ..., arg10) // 十个占位符

格式化字符串使用 {}作为占位符会自动替换为对应参数的值。支持最多10个格式化变量参数。

clog() - 颜色输出

输出带颜色的日志信息。

参数:

  • color (string) - 颜色名称
  • message - 要输出的内容支持所有log()支持的类型)

支持的颜色: red, green, yellow, blue, magenta, cyan, white, gray

日志等级函数

带时间戳和颜色的日志等级输出。

logerr(message) - 错误日志,红色输出,格式:[时间 ERROR] 消息

logok(message) - 成功日志,绿色输出,格式:[时间 OK] 消息

loginfo(message) - 信息日志,青色输出,格式:[时间 INFO] 消息

logwarn(message) - 警告日志,黄色输出,格式:[时间 WARN] 消息

参数:

  • message - 要输出的消息支持所有log()支持的类型)

使用

#include "log.h"

int main() {
    int i = 18;
    double f = 1.75;
  
    log("hello");
    log(i);
    log(f);
    log("年龄{}岁, 身高{}米", i, f);
  
    clog("red", "错误信息");
    logerr("MySQL连接失败");
    logok("MySQL连接成功");
    loginfo("已插入数据");
  
    return 0;
}

编译

gcc -std=c2x -o main test.c log.c

需要GCC 13+或其他支持C23标准的编译器。