|
xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
|
版本:0.1 | 日期:2026-07-03 | 路径: platforms/components/xtiny/xt_log/
xt_log 是 XTINY 日志输出模块,提供多级别日志过滤、十六进制数据 dump 和断言处理。底层通过平台日志输出接口输出,单条日志 ≤128 字节。
| 依赖 | 用途 |
|---|---|
| xt_error.h | 错误码类型 xt_err_t |
| 平台日志输出接口 | 实际输出 |
日志级别从低到高依次为:
| 级别 | 宏 | 值 | 用途 |
|---|---|---|---|
| 错误 | XT_LOG_ERROR | 1 | 严重错误,影响功能 |
| 警告 | XT_LOG_WARN | 2 | 异常情况,但不影响运行 |
| 信息 | XT_LOG_INFO | 3 | 正常运行信息(默认级别) |
| 调试 | XT_LOG_DEBUG | 4 | 详细调试信息 |
当前日志级别设为 N 时,只输出级别 ≤ N 的日志。默认级别为 XT_LOG_INFO ,即输出错误、警告、信息三级,调试日志被屏蔽。
xt_log_set_level 对超出 XT_LOG_DEBUG 的值自动截断,防止无效级别。
为减少重复代码,头文件提供了四个无 tag 的预定义宏( #if !defined() 模式):
| 宏 | 等效调用 |
|---|---|
| xt_log_error(fmt, ...) | xt_log(日志输出) |
| xt_log_warn(fmt, ...) | xt_log(日志输出) |
| xt_log_info(fmt, ...) | xt_log(日志输出) |
| xt_log_debug(fmt, ...) | xt_log(日志输出) |
带 tag 宏输出时在日志前添加 [tag] 前缀,便于过滤和定位来源:
| 宏 | 等效调用 |
|---|---|
| XT_LOGE(tag, fmt, ...) | xt_log(日志输出) |
| XT_LOGW(tag, fmt, ...) | xt_log(日志输出) |
| XT_LOGI(tag, fmt, ...) | xt_log(日志输出) |
| XT_LOGD(tag, fmt, ...) | xt_log(日志输出) |
XT_ASSERT_MSG(expr, errcode) 宏:当 expr 为假时,通过 xt_log_error 输出失败位置(函数名、行号、错误码),然后调用 xt_assert_failed(errcode) 进入平台默认断言处理。
用户可通过 xt_assert_set_callback 注册回调,在平台默认处理前插入自定义逻辑(如保存关键数据、记录诊断信息)。回调为 NULL 时跳过。
xt_assert_failed 声明为 __WEAK ,用户可在任意位置重写整个函数。
提供类似标准 C printf / vprintf 的格式化输出函数,固定以 XT_LOG_INFO 级别通过平台 SDK 输出,不受当前日志级别影响。与 xt_log 系列的区别:不检查级别、不添加 tag 前缀,适合直接替换 printf 调试代码。
以下为函数签名大纲,完整的参数说明、返回值、注意事项请查看 xt_log(日志输出) 。
| 函数签名 | 说明 |
|---|---|
| void xt_log_setup(uint8_t id, uint32_t baudrate, uint8_t tx_io, uint8_t rx_io) | 初始化日志模块 |
| void xt_log_set_level(uint8_t level) | 设置日志输出级别 |
| uint8_t xt_log_get_level(void) | 获取当前日志级别 |
| 函数签名 | 说明 |
|---|---|
| void xt_log(uint8_t level, const char *tag, const char *fmt, ...) | 输出格式化日志(级别过滤 + tag 前缀) |
| void xt_log_dump_hex(const void *ptr, uint32_t size) | 以十六进制格式输出内存数据 |
| void xt_log_dump_hex_debug(const void *ptr, uint32_t size) | 以十六进制格式输出(仅 DEBUG 级别) |
| int xt_printf(const char *fmt, ...) | 格式化字符串输出 |
| int xt_vprintf(const char *fmt, va_list args) | 格式化字符串输出(va_list 版本) |
| 函数签名 | 说明 |
|---|---|
| void xt_assert_failed(xt_err_t errcode) | 断言失败处理( __weak 可重写) |
| void xt_assert_set_callback(xt_assert_cb_t cb) | 注册断言失败回调 |
无编译配置项。日志级别通过运行时 xt_log_set_level 调整,便捷宏可通过 #define 覆盖。
| 行为 | 说明 |
|---|---|
| 单条日志 ≤128 字节 | buffer 固定 128 字节,超长内容截断 |
| 默认级别 XT_LOG_INFO | DEBUG 日志默认不输出,需调 xt_log_set_level(XT_LOG_DEBUG) |
| xt_log_setup 参数未使用 | 当前实现中仅记录 id , baudrate / tx_io / rx_io 预留未使用 |
| xt_log_set_level 范围限制 | 超过 XT_LOG_DEBUG 的值自动截断为 XT_LOG_DEBUG |
| tag 为 NULL 时无前缀 | 调用 xt_log(level, NULL, "...") 不添加 [tag] 前缀 |
| 便捷宏可覆盖 | 所有 xt_log_* 和 XT_LOG* 宏均用 #if !defined() 保护 |
| dump_hex 当前为空实现 | 头文件声明但 .c 中函数体为空 |
| 断言回调为 NULL 时跳过 | 直接进入平台默认断言处理 |
| xt_printf / xt_vprintf 固定 INFO 级别 | 不受 xt_log_set_level 影响 |
| xt_assert_failed 为 __WEAK | 用户可在任意源文件重写整个函数 |
示例代码位于 examples/system/log/。