日志管理
概述
PSDK 的日志管理功能支持通过如串口、终端或USB 等日志输出方法,输出Debug、Info、Warn和Error 四种类型的日志;使用能够显示日志颜色的终端工具,如Putty 等能够以不同的颜色显示不同类型的日志。
基于PSDK 开发的负载设备输出的日志结构如下:日志颜色起始符 + 系统时间 + 模块名称 + 日志等级标识 + 日志内容 + 日志颜色结束符
基础概念
日志标识符
使用不支持显示日志颜色的调试工具查看日志时,会显示日志的颜色标识符。
日志颜色:不同类型的日志,其标识颜色也不同。XShell、SecureCRT及Putty 等工具能够根据日志的等级,以不同的颜色显示不同类型的日志。
日志颜色起始标识符:
- 黑色:
\033[30m
、红色:\033[31m
、绿色:\033[32m
- 黄色:
\033[33m
、蓝色:\033[34m
、紫色:\033[35m
- 青色:
\033[36m
、白色:\033[37m
- 黑色:
日志颜色结束标识符:
\033[0m
日志信息
- 系统时间:负载设备上电时,负载设备的时间为负载设备系统的时间,当负载设备与无人机完成时间同步后,负载设备的时间将与无人机的时间同步(ms)。
- 模块名称:PSDK 模块的名称(该名称无法被修改),用户打印接口的模块名称为“user”。
- 日志内容:单条日志最多不超过500 个字节(bytes)。
- 日志等级:日志的等级从高到低为Debug、Info、Warn和Error,日志管理功能模块可打印不高于指定等级的所有日志。
表1. 日志等级说明
日志等级 日志内容 输出接口 日志颜色 Debug - 4 调试信息 USER_LOG_DEBUG White Info - 3 关键信息 USER_LOG_INFO Green Warn - 2 警告信息 USER_LOG_WARN Yellow Error - 1 系统错误 USER_LOG_ERROR Red
使用日志管理功能
使用PSDK 日志管理功能,需要先初始化日志打印接口,设置日志等级,通过注册日志打印函数,实现日志管理功能。
说明: 本教程以“使用STM32 在RTOS 系统上通过串口打印日志信息”为例,介绍使用日志管理功能的方法和步骤。
1. 初始化串口并注册日志输出方法
在RTOS 系统上使用PSDK 开发负载设备的日志管理功能时,建议使用串口打印日志信息。
static T_DjiReturnCode DjiUser_PrintConsole(const uint8_t *data, uint16_t dataLen)
{
UART_Write(DJI_CONSOLE_UART_NUM, (uint8_t *) data, dataLen);
return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
UART_Init(DJI_CONSOLE_UART_NUM, DJI_CONSOLE_UART_BAUD);
2. 注册日志打印接口
使用PSDK 的日志管理功能,需要初始化日志打印方法printConsole
,设置所需打印的日志等级、是否启动颜色显示和该日志对应的打印方法,并通过DjiLogger_AddConsole()
注册到负载设备控制程序中。
注意: 使用PSDK 开发的负载设备最多支持同时使用8种日志打印方法。
T_DjiLoggerConsole printConsole = {
.func = DjiUser_PrintConsole,
.consoleLevel = DJI_LOGGER_CONSOLE_LOG_LEVEL_INFO,
.isSupportColor = true,
};
returnCode = DjiLogger_AddConsole(&printConsole);
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
printf("add printf console error");
goto out;
}
3. 输出日志信息
调用日志打印函数输出日志信息,日志输出结果如 图1.日志信息 所示。
USER_LOG_ERROR("psdk log console test.");
USER_LOG_WARN("psdk log console test.");
USER_LOG_INFO("psdk log console test.");
USER_LOG_DEBUG("psdk log console test.");
图1.日志信息
说明: 日志的等级为Info,因此负载设备中类型为Info、Warn 及Error 的日志将被输出在终端上,类型为Debug 的日志将不会被打印出来。
日志查看
Linux:
- 在Clion IDE 上使用 Grep Console可过滤负载设备的日志文档
- 使用grep命令:在终端中执行
./demo_linux_ubuntu | grep 'Info'
过滤所需的日志信息,更多使用方法请使用man grep
查询
RTOS:使用串口查看工具如SecureCRT、XShell或Putty 等工具查看日志信息