From 9fd0b2290c62b5de62848ba0f9667c20dccf94a0 Mon Sep 17 00:00:00 2001 From: MyZOOO Date: Fri, 19 Dec 2025 11:00:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 82 +++++++++++++++++++++++++++---------------------------- 1 file changed, 40 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index da09893..7ca04a8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Log for C -基于C23的日志库,支持自动类型识别、格式化输出、颜色和日志等级 +基于C23的日志库,支持自动类型识别、格式化输出、颜色格式化输出和日志等级格式化输出 ## 功能说明 @@ -12,74 +12,72 @@ **支持的参数类型:** -- `int` - 整数 -- `long` - 长整数 -- `double` - 双精度浮点数 -- `float` - 单精度浮点数 +- `bool` - 布尔(要求编译器必须支持C23标准) +- `int` / `long` / `long long` - 整数 +- `float` / `double` / `long double` - 浮点数 +- `char` - 字符 - `char*` / `const char*` - 字符串 - `wchar_t*` / `const wchar_t*` - 宽字符串 -- `char` - 字符 > **注意:** C语言中字符字面量(如 `'A'`)的类型是 `int`,会被当作整数打印。如需打印字符,请使用 `char`类型变量或显式转换 `(char)'A'` -**使用方式:** - -```c -log(value) // 单个值输出 -log(format, arg1) // 一个占位符 -log(format, arg1, arg2) // 两个占位符 -... // 最多支持10个占位符 -log(format, arg1, ..., arg10) // 十个占位符 -``` - 格式化字符串使用 `{}`作为占位符,会自动替换为对应参数的值。支持最多10个格式化变量参数 -### clog() - 颜色输出 +### clog() / clog_f() - 颜色输出 / 颜色格式化输出 -输出带颜色的日志信息 +输出带颜色的日志信息(支持格式化) **参数:** -- `color` (string) - 颜色名称 -- `message` - 要输出的内容(支持所有log()支持的类型) +- `color` - 颜色名称 +- `message` - 消息内容 +- `format` - 格式化字符串(`clog_f`) **支持的颜色:** `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white`, `gray` -### 日志等级函数 +### 日志等级输出 / 日志等级格式化输出 -带时间戳和颜色的日志等级输出 +带时间戳和颜色的分级日志 -**logerr(message)** - 错误日志,红色输出,格式:`[时间 ERROR] 消息` +**无格式化版本:** -**logok(message)** - 成功日志,绿色输出,格式:`[时间 OK] 消息` +- `logerr(message)` - 错误日志(红色) +- `logok(message)` - 成功日志(绿色) +- `loginfo(message)` - 信息日志(青色) +- `logwarn(message)` - 警告日志(黄色) +- `logdebug(message)` - 调试日志(灰色) -**loginfo(message)** - 信息日志,青色输出,格式:`[时间 INFO] 消息` +**格式化版本:** `logerr_f()`、`logok_f()`、`loginfo_f()`、`logwarn_f()`、`logdebug_f()`(支持 `{}` 占位符) -**logwarn(message)** - 警告日志,黄色输出,格式:`[时间 WARN] 消息` +格式:`[时间 LEVEL] 消息` -**参数:** - -- `message` - 要输出的消息(支持所有log()支持的类型) - -## 使用 +## 使用示例 ```c #include "log.h" int main() { - int i = 18; - double f = 1.75; - log("hello"); - log(i); - log(f); + int age = 18; + float height = 1.75; char name[] = "小明"; - log("他的名字是{}年龄是{}岁, 身高是{}米,他的身份是{},他最近的考试成绩是{}", name, i, f, L"大学生", (char)'A'); - clog("red", "world"); + + log("hello"); + log(age); + log(height); + log(true); + + log("姓名: {},年龄: {}岁,身高: {}米", name, age, height); + + clog("green", "成功"); + clog_f("red", "错误代码: {}", 404); + logerr("MySQL连接失败"); - logok("MySQL连接成功"); - loginfo("已插入数据"); - logwarn("测试失败"); + logok_f("用户 {} 登录成功", "admin"); + loginfo_f("处理了 {} 条记录", 100); + logwarn_f("内存使用: {}%", 85.5); + logdebug("调试信息"); + return 0; } ``` @@ -87,7 +85,7 @@ int main() { ## 编译 ```bash -gcc -std=c2x -o main test.c log.c +gcc -std=c23 -o main test.c log.c ``` > 推荐GCC 13+或其他支持C23标准的编译器,其他版本未测试,可行性不明