# 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. 可以选择是否带颜色输出,并可单独设置不同日志的输出颜色。