简体中文 | English
本下位机程序包含log.c、log.h两个文件,位于仓库lower/log目录下,也可以下载发行版中的下位机程序压缩包后在log文件夹中找到
-
标准库函数配置项
-
#define LOG_MEMCPY(dst,src,len):内存拷贝函数,默认使用string.h中的memcpy函数 -
#define LOG_SPRINTF(buf,fmt,...):格式化字符串打印函数,默认使用stdio.h中的sprintf函数 -
#define LOG_STRLEN(str):字符串长度计算函数,默认使用string.h中的strlen函数
注:标准库函数配置项是为了平台不支持标准库函数的情况设计的,一般无需修改
-
-
缓冲区大小配置项
-
#define LOG_MAX_LEN:单条日志数据最大长度,包含日志标签、日志内容、时间戳、函数名等数据,建议不小于100 -
#define LOG_MAX_QUEUE_SIZE:缓冲区能存放的最大日志条数,需根据日志打印频率确定,默认值为10
注:缓冲区总占用内存大小为上述两项的乘积,若短时间写入多条日志可能导致缓冲区溢出,后输出的日志将被丢弃
-
-
其他配置项
-
#define LOG_GET_MS():获取时间戳接口,需返回系统启动以来的毫秒数 -
#define LOG_GET_FUNC_NAME():获取宏展开位置的函数名,一般由编译器提供__FUNCTION__宏实现,若平台不支持可替换为空字符串("") -
#define LOG_ENABLE:日志输出使能项,若注释掉则所有输出语句将被替换为空语句
-
-
#define LOG_INFO(tag,msg,...):输出信息日志,tag为日志标签,msg为日志内容,日志内容中可包含格式化占位符,与后面的可变参数一起进行格式化输出例:
LOG_INFO("sys","code=%d",123); //输出的日志标签为"sys",日志内容为"code=123" -
#define LOG_DEBUG(tag,msg,...):输出调试日志,用法与信息日志相同 -
#define LOG_WARN(tag,msg,...):输出警告日志,用法与信息日志相同 -
#define LOG_ERROR(tag,msg,...):输出错误日志,用法与信息日志相同
-
将
log.h和log.c添加到工程目录中注:若不想新增
log.c文件或编译器不支持多个源文件,可以将其中的内容放入任何一个源文件中 -
根据所用平台修改配置项
-
一般情况下只需修改时间戳配置
LOG_GET_MS即可,其余参数可以保持默认 -
若下位机内存不够,或希望输出更长的日志,或希望一次性写入更多条日志,可修改缓冲区大小配置
LOG_MAX_QUEUE_SIZE、LOG_MAX_LEN -
若编译器不支持
__FUNCTION__宏,需要将LOG_GET_FUNC_NAME替换为空字符串 -
若编译器不支持标准库函数,需要自行实现各函数并替换到对应宏定义中
-
-
在需要使用日志的文件中引用
log.h,然后调用接口进行日志输出即可,上位机会定时查看并移除日志缓冲区中的数据
- 日志输出频率不能持续过高,上位机读取速度约为10条/s,若长时间高于该频率输出日志会使缓冲区溢出而导致日志丢失