0514bfafe4996bd30f0ffcb6c9fe7d3c1205ee84
Log for C
基于C23的日志库,支持自动类型识别、格式化输出、颜色和日志等级
功能说明
使用C11的 _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);
char name[] = "小明";
log("他的名字是{}年龄是{}岁, 身高是{}米,他的身份是{},他最近的考试成绩是{}", name, i, f, L"大学生", (char)'A');
clog("red", "world");
logerr("MySQL连接失败");
logok("MySQL连接成功");
loginfo("已插入数据");
logwarn("测试失败");
return 0;
}
编译
gcc -std=c2x -o main test.c log.c
推荐GCC 13+或其他支持C23标准的编译器,其他版本未测试,可行性不明
Description
Languages
C
100%