日志管理

2023-07-18
暂无评分

概述

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_DEBUGWhite
    Info - 3关键信息USER_LOG_INFOGreen
    Warn - 2警告信息USER_LOG_WARNYellow
    Error - 1系统错误USER_LOG_ERRORRed

使用日志管理功能

使用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 Consoleopen in new window可过滤负载设备的日志文档
    • 使用grep命令:在终端中执行./demo_linux_ubuntu | grep 'Info'过滤所需的日志信息,更多使用方法请使用man grep查询
  • RTOS:使用串口查看工具如SecureCRT、XShell或Putty 等工具查看日志信息

若您对文档有意见或疑惑,点击可快速反馈,我们会与您联系。