# y_log
**Repository Path**: y-cz/y_log
## Basic Information
- **Project Name**: y_log
- **Description**: 一种用于嵌入式设备调试的简单日志库
- **Primary Language**: C
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 1
- **Created**: 2022-01-09
- **Last Updated**: 2026-05-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: log, ylog, 日志
## README
## YLOG
### 1. YLOG 介绍
一种用于嵌入式设备简单调试的日志,可以方便的将需要输出的信息进行格式化显示。
### 2. YLOG 使用说明
YLOG 目前包含源码文件 y_log.h、y_log.c 和 test_case.c 文件,使用时参考以下示例:
```c
#include "y_log.h"
#include
char *get_time_str() {
static char time_str[24]; // "YYYY-MM-DD HH:MM:SS mmm"
SYSTEMTIME st;
GetLocalTime(&st);
sprintf(time_str, "%04d-%02d-%02d %02d:%02d:%02d %03d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
return time_str;
}
int main() {
// 开始测试
YLOG_CRLF();
YLOGI("------------------------------------------ y_log_test start ------------------------------------------");
YLOGI("Y_LOG %s", y_log_get_version_str());
// 设置日志配置 不设置即使用默认配置
Y_LOG_CONFIG_st config = y_log_get();
config.is_set = true; ///< 是否设置过
config.open_color = true; ///< 是否开启颜色日志
config.open_time = true; ///< 是否开启时间日志
config.open_assert = true; ///< 是否开启断言日志打印
config.open_error = true; ///< 是否开启错误日志打印
config.open_warn = true; ///< 是否开启警告日志打印
config.open_info = true; ///< 是否开启信息日志打印
config.open_debug = true; ///< 是否开启调试日志打印
config.open_verbose = true; ///< 是否开启详细日志打印
config.open_data = true; ///< 是否开启数据日志打印
config.get_time_str_cb = get_time_str; ///< 获取时间字符串的函数指针
y_log_set(config);
// 断言测试
// 表达式为真 断言成功 程序继续执行 (结束后默认换行)
// 表达式为假 断言失败 程序立即返回
// YLOGA(1); // 断言失败 则返回但无返回值
YLOGA_AND_RETURN(1, false); // 断言失败 则返回 false
YLOGA_INIT(true); // 打印初始化结果 不返回值
// 打印 各种格式日志 (结束后默认换行)
YLOGE("HELLO,YLOG!!!");
YLOGW("HELLO,YLOG!!!");
YLOGI("HELLO,YLOG!!!");
YLOGD("HELLO,YLOG!!!");
YLOGV("HELLO,YLOG!!!");
// 打印 16 进制格式数据 (结束后默认换行)
unsigned char buf[8] = {1, 2, 3, 4, 5, 6, 7, 8};
YLOG_DATA(buf, sizeof(buf));
// 打印换行
YLOGI("LF");
YLOG_LF();
YLOGI("CR");
YLOG_CR();
YLOGI("CRLF");
YLOG_CRLF();
// 结束测试
YLOGI("------------------------------------------ y_log_test end ------------------------------------------");
return 0;
}
// 输出结果:
2000-01-01 00:00:00 000 |INFO |0018| main| -----> ------------------------------------------ y_log_test start ------------------------------------------
2000-01-01 00:00:00 000 |INFO |0019| main| -----> Y_LOG V1.0.0
2026-05-22 00:31:26 672 |INFO |0041| main| -----> init OK true
2026-05-22 00:31:26 672 |ERROR|0044| main| -----> HELLO,YLOG!!!
2026-05-22 00:31:26 672 |WARN |0045| main| -----> HELLO,YLOG!!!
2026-05-22 00:31:26 672 |INFO |0046| main| -----> HELLO,YLOG!!!
2026-05-22 00:31:26 672 |DEBUG|0047| main| -----> HELLO,YLOG!!!
2026-05-22 00:31:26 672 |VER |0048| main| -----> HELLO,YLOG!!!
2026-05-22 00:31:26 672 |DATA |0052| main| -----> 8 byte : [01 02 03 04 05 06 07 08 ]
2026-05-22 00:31:26 672 |INFO |0055| main| -----> LF
2026-05-22 00:31:26 672 |INFO |0057| main| -----> CR
2026-05-22 00:31:26 672 |INFO |0059| main| -----> CRLF
2026-05-22 00:31:26 672 |INFO |0063| main| -----> ------------------------------------------ y_log_test end ------------------------------------------
```
### 3. 依赖
YLOG 无任何依赖
### 4. 版本说明
#### V1.0.0
1. 去掉版本号打印宏
2. 增加通过函数 API 配置参数
3. 时间接口改为回调方式
#### V0.2.1
1. 修复断言宏结尾分号不统一的问题
#### V0.2.0
1. 添加 y_log.c 文件,将宏实现放到函数中,减少代码体积
#### V0.1.11
1. 修改日志开关,由等级控制改为单独控制
2. 更新文档描述
#### V0.1.10
1. 增加断言宏 YLOGA_INIT 判断初始化是否成功,成功或者失败都打印一条日志
2. 增加宏 YLOG_VERSION 打印版本信息
#### V0.1.9
1. 增加断言宏 YLOGA_NULL、YLOGA_TRUE、YLOGA_FALSE,断言条件满足后直接返回
#### V0.1.8
1. 增加断言宏 YLOGA,断言某个表达式是否为真
2. 增加时间打印,使用时需要配置获取时间戳 API
3. 修改颜色打印宏,减少宏判断,优化代码逻辑
#### V0.1.7
1. 修改 YLOG_DATA 宏打印格式,改为一行打印
#### V0.1.6
1. 修改默认打印为 Y_LEVEL_DEBUG 等级, 解决初次使用打印内容过多的问题
#### V0.1.5
1. 增加回车换行打印宏,YLOG_LF (), YLOG_CR (), YLOG_CRLF ()
2. readme.md 增加使用示例
#### V0.1.4
1. 修改数据打印时循环变量命名,避免与常用循环变量 i 发生冲突
#### V0.1.3
1. 取消使能宏,更改通过为设置日志等级 Y_LEVEL_NONE 关闭日志打印,解决某些情况下突然关闭使能导致编译不过
2. 增加数据日志打印功能,将需处理的数据按字节打印出来
#### V0.1.2
1. 文件中添加 MIT 许可证
2. 修改注释风格和部分宏名称,使阅读时更容易理解
3. USE_Y_LOG 和 Y_LOG_USE_COLOR 从定义使能更改为 0/1 值使能
4. 代码行数显示由固定 3 位改为固定 4 位,解决文件行数大于 1000 时打印对不齐的问题
5. 打印内容前后各增加一个空格
6. 版本号打印由函数变为内联函数,并删除 y_log.c 文件,方便使用
#### V0.1.1
1. 修改宏定义名称,防止与其他日志系统产生冲突。
2. 修改一些对齐格式,使格式更简单美观,方便阅读。
#### V0.1.0
1. 格式化输出 日志等级,行号,函数名,日志信息 等内容。
2. 可静态配置输出日志等级。
3. 可以选择是否带颜色输出,并可单独设置不同日志的输出颜色。