mirror of
https://github.com/NevermindZZT/letter-shell.git
synced 2025-01-21 10:02:54 +08:00
4522c026bb
优化 x86 demo使用cmake构建
log
嵌入式日志打印工具
简介
log是一个用于嵌入式系统的日志打印工具,可以为日志定义不同的级别,然后设置日志工具的打印级别,可以进行日志打印的控制
此外,log通过letter shell的伴生对象功能,可以和letter shell结合,实现log和shell的绑定等功能
使用
-
实现log写buffer函数
void uartLogWrite(char *buffer, short len) { serialTransmit(&debugSerial, (uint8_t *)buffer, len, 0x100); }
-
定义log对象
Log uartLog = { .write = uartLogWrite, .active = true, .level = LOG_DEBUG };
-
注册log对象
logRegister(&uartLog, NULL);
配置
通过修改log.h文件中的宏,可以对log工具进行配置
宏 | 意义 |
---|---|
LOG_BUFFER_SIZE | log输出缓冲大小 |
LOG_USING_COLOR | 是否使用颜色 |
LOG_MAX_NUMBER | 允许注册的最大log对象数量 |
LOG_AUTO_TAG | 是否自动添加TAG |
LOG_END | log信息结尾 |
LOG_TAG | 自定添加的TAG |
LOG_TIME_STAMP | 设置获取系统时间戳 |
API
以下是log工具部分API的说明
logPrintln
宏声明,用于一般的打印输出
#define logPrintln(format, ...)
- 参数
format
输出格式...
可变参数
logError
宏声明,错误日志级别输出
#define logError(fmt, ...)
- 参数
fmt
输出格式...
可变参数
logWarning
宏声明,警告日志级别输出,函数原型及参数说明参考logError
logInfo
宏声明,信息日志级别输出,函数原型及参数说明参考logError
logDebug
宏声明,调试日志级别输出,函数原型及参数说明参考logError
logVerbose
宏声明,冗余日志级别输出,函数原型及参数说明参考logError
logAssert
宏声明,断言
#define logAssert(expr, action)
- 参数
expr
表达式action
断言失败执行操作
logRegister
注册log对象
void logRegister(Log *log, Shell *shell)
- 参数
log
log对象shell
关联的shell对象
logSetLevel
设置日志级别
void logSetLevel(Log *log, LogLevel level)
- 参数
log
log对象level
日志级别
logHexDump
数据16进制打印
void logHexDump(Log *log, LogLevel level, void *base, unsigned int length)
- 参数
log
log对象level
日志级别base
数据基址length
数据长度
结合letter shell尾行模式
log工具可以结合letter shell的尾行模式,实现log和shell共用一个终端,但不影响shell交互体验
-
使用
shellWriteEndLine
事项log写buffer函数void uartLogWrite(char *buffer, short len) { if (uartLog.shell) { shellWriteEndLine(uartLog.shell, buffer, len); } }
-
定义log对象
Log uartLog = { .write = uartLogWrite, .active = true, .level = LOG_DEBUG };
-
注册log对象
logRegister(&uartLog, &shell);
其他用法
单独控制某个文件日志
log工具可以单独对某个文件的日志进行打印控制,使用时,在对应的.c文件中加入
#undef LOG_ENABLE
#define LOG_ENABLE 1
即可单独控制某个文件的日志开关