MLogger 固件端日志模块
功能
通过串口将日志信息发送到PC,支持多级日志信息和格式化输出。
如何使用
- 引入MLogger工程
通过源码或者编译成lib库的方式将MLogger模块引入到MCU工程中。
- 包含头文件
在需要进行日志打印的源文件引入MLogger.h头文件
- 配置日志
通过接口MLogger_SetupLogger(M_LOGGER_Entity logger, M_LOGGER_LEVEL level)
配置日志模块,
该接口只需要在main.c或程序最开始时调用一次即可。例如:
MLogger_SetupLogger((M_LOGGER_Entity)TxToPHY_Calbk, LOG_DEBUG);
其中,M_LOGGER_Entity是一个函数指针,其定义如下:
typedef void (*M_LOGGER_Entity)(uint8_t * data , uint32_t num);
通常传入的是串口发送函数:TxToPHY_Calbk
。
M_LOGGER_LEVEL
定义了日志的输出等级,当为LOG_DEBUG时所有日志都将会输出,为LOG_DISABLE时,
日志输出被禁止。其完整定义如下:
typedef enum {
LOG_DEBUG,
LOG_INFO,
LOG_WARNNING,
LOG_ERROR,
LOG_DISABLE
}M_LOGGER_LEVEL;
- 打印日志
当配置完日志后,便可以在任意源文件中引入MLogger.h后进行日志打印。
MLogger_LOGD("This is debug message");
MLogger_LOGI("This is info message");
MLogger_LOGW("This is warning message");
MLogger_LOGW("This is error message");
日志支持格式化输出,比如
MLogger_LOGD("ASDO write integer object: %s-%d", self->pri.rxName, tmpI);
如果rxName对应字符串为"UM",tmpI对应值为100,则输出字符串为:
"[DEBG] ASDO write integer object: UM-100"
关于格式化输出的支持,MLogger移植了基于MIT协议的第三方开源代码。
日志协议和上位机日志查看支持
设备发送到PC上的日志消息都会包含数字4的头和字符';'的结尾符,就像MSDO协议一样。加入头尾标识是
为了和MSDO、ASDO等其他数据流划分开。
上位机版本大于等于0.31支持了日志信息的查看,打开Floating Tool里的设备日志窗口便可查看,如下
显示了对于不同日志等级进行不同颜色的输出:
设备日志
网友评论