修改 优化使用说明
This commit is contained in:
82
README.md
82
README.md
@@ -1,6 +1,6 @@
|
|||||||
# Log for C
|
# Log for C
|
||||||
|
|
||||||
基于C23的日志库,支持自动类型识别、格式化输出、颜色和日志等级
|
基于C23的日志库,支持自动类型识别、格式化输出、颜色格式化输出和日志等级格式化输出
|
||||||
|
|
||||||
## 功能说明
|
## 功能说明
|
||||||
|
|
||||||
@@ -12,74 +12,72 @@
|
|||||||
|
|
||||||
**支持的参数类型:**
|
**支持的参数类型:**
|
||||||
|
|
||||||
- `int` - 整数
|
- `bool` - 布尔(要求编译器必须支持C23标准)
|
||||||
- `long` - 长整数
|
- `int` / `long` / `long long` - 整数
|
||||||
- `double` - 双精度浮点数
|
- `float` / `double` / `long double` - 浮点数
|
||||||
- `float` - 单精度浮点数
|
- `char` - 字符
|
||||||
- `char*` / `const char*` - 字符串
|
- `char*` / `const char*` - 字符串
|
||||||
- `wchar_t*` / `const wchar_t*` - 宽字符串
|
- `wchar_t*` / `const wchar_t*` - 宽字符串
|
||||||
- `char` - 字符
|
|
||||||
|
|
||||||
> **注意:** C语言中字符字面量(如 `'A'`)的类型是 `int`,会被当作整数打印。如需打印字符,请使用 `char`类型变量或显式转换 `(char)'A'`
|
> **注意:** C语言中字符字面量(如 `'A'`)的类型是 `int`,会被当作整数打印。如需打印字符,请使用 `char`类型变量或显式转换 `(char)'A'`
|
||||||
|
|
||||||
**使用方式:**
|
|
||||||
|
|
||||||
```c
|
|
||||||
log(value) // 单个值输出
|
|
||||||
log(format, arg1) // 一个占位符
|
|
||||||
log(format, arg1, arg2) // 两个占位符
|
|
||||||
... // 最多支持10个占位符
|
|
||||||
log(format, arg1, ..., arg10) // 十个占位符
|
|
||||||
```
|
|
||||||
|
|
||||||
格式化字符串使用 `{}`作为占位符,会自动替换为对应参数的值。支持最多10个格式化变量参数
|
格式化字符串使用 `{}`作为占位符,会自动替换为对应参数的值。支持最多10个格式化变量参数
|
||||||
|
|
||||||
### clog() - 颜色输出
|
### clog() / clog_f() - 颜色输出 / 颜色格式化输出
|
||||||
|
|
||||||
输出带颜色的日志信息
|
输出带颜色的日志信息(支持格式化)
|
||||||
|
|
||||||
**参数:**
|
**参数:**
|
||||||
|
|
||||||
- `color` (string) - 颜色名称
|
- `color` - 颜色名称
|
||||||
- `message` - 要输出的内容(支持所有log()支持的类型)
|
- `message` - 消息内容
|
||||||
|
- `format` - 格式化字符串(`clog_f`)
|
||||||
|
|
||||||
**支持的颜色:**
|
**支持的颜色:**
|
||||||
`red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white`, `gray`
|
`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
|
```c
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int i = 18;
|
int age = 18;
|
||||||
double f = 1.75;
|
float height = 1.75;
|
||||||
log("hello");
|
|
||||||
log(i);
|
|
||||||
log(f);
|
|
||||||
char name[] = "小明";
|
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连接失败");
|
logerr("MySQL连接失败");
|
||||||
logok("MySQL连接成功");
|
logok_f("用户 {} 登录成功", "admin");
|
||||||
loginfo("已插入数据");
|
loginfo_f("处理了 {} 条记录", 100);
|
||||||
logwarn("测试失败");
|
logwarn_f("内存使用: {}%", 85.5);
|
||||||
|
logdebug("调试信息");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -87,7 +85,7 @@ int main() {
|
|||||||
## 编译
|
## 编译
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
gcc -std=c2x -o main test.c log.c
|
gcc -std=c23 -o main test.c log.c
|
||||||
```
|
```
|
||||||
|
|
||||||
> 推荐GCC 13+或其他支持C23标准的编译器,其他版本未测试,可行性不明
|
> 推荐GCC 13+或其他支持C23标准的编译器,其他版本未测试,可行性不明
|
||||||
|
|||||||
Reference in New Issue
Block a user