5. 日志

本章节主要介绍了K2000 如何使用日志系统。支持的功能包括:自定义输出端口、日志模块化的分级输出、日志的多种过滤方式

5.1. 自定义输出端口

通过改变日志的输出端口,可以实现输出方式的多样化,例如: SD卡、串口、上位机、显示屏等

  • 1.定义输出端口的函数
    def log_print(fmt):

    print(fmt) # 串口输出

  • 2.重定向设置日志的输出端口

    SHARP_log_output_ReInit(log_print)

Attention

输出函数的形参,有且仅有一个

# 定义日志输出函数
def log_print(fmt):
    print(fmt)          # 串口输出

SHARP_log_output_ReInit(log_print)       # 重定向设置日志输出端口

5.2. 日志模块化的分级输出

用户可以根据 日志标签日志级别 ,自定义日志的模块,并根据日志内容选择不同级别输出

  • 1.初始化日志模块
    # 设置标签 “wifi”, 信息级别的日志模块(仅输出 信息级别 及以上日志)
    WIFI_log = SHARP_log_mod(“wifi”, LOG_LVL_INFO)
  • 2.不同级别的日志输出
    WIFI_log.LOG_E(“This is an error message “) # 错误日志
    WIFI_log.LOG_W(“This is a warning message”) # 警告日志
    WIFI_log.LOG_I(“This is an info message “) # 信息日志
    WIFI_log.LOG_D(“This is a debug message “) # 调试日志
  • 3.日志级别 由高到低,有如下优先级别:

LOG_LVL_ERROR      # **错误**:发生严重的、不可修复的错误时输出的日志属于错误级别日志
LOG_LVL_WARNING    # **警告**:出现一些不太重要的、具有可修复性的错误时,会输出这些警告日志
LOG_LVL_INFO       # **信息**:给本模块上层使用人员查看的重要提示信息日志,例如:初始化成功,当前工作状态等。该级别日志一般在量产时依旧 "保留"
LOG_LVL_DBG        # **调试**:给本模块开发人员查看的调试日志,该级别日志一般在量产时 "关闭"

Attention

低于设定级别的日志将不会输出

  • 4.示例

WIFI_log = SHARP_log_mod("wifi", LOG_LVL_INFO)        # 设置标签wifi,信息级别的日志模块(仅输出 信息级别 及以上日志)

WIFI_log.LOG_W("This is a warning message")   # 警告日志
WIFI_log.LOG_E("This is an error message")    # 错误日志
WIFI_log.LOG_I("This is an info message")     # 信息日志
WIFI_log.LOG_D("This is a debug message")     # 调试日志

5.3. 日志的多种过滤方式

由于日志输出量的不断增大,为了避免日志被杂乱无章的输出,就需要过滤无关日志。目前支持4种过滤方式

  • 1.按模块的级别过滤

    动态修改某一个日志模块的过滤级别,过滤级别要高于日志级别,低于过滤级别的日志都将停止输出

    • SHARP_log_tag_lvl_filter_set(tag,level)

      • tag : 日志的标签

      • level: 设定的日志过滤级别

    SHARP_log_tag_lvl_filter_set("wifi",LOG_FILTER_LVL_SILENT)    #关闭 wifi 模块全部日志
    SHARP_log_tag_lvl_filter_set("wifi",LOG_FILTER_LVL_ALL)       #开启 wifi 模块全部日志
    SHARP_log_tag_lvl_filter_set("wifi",LOG_LVL_WARNING)          #设置 wifi 模块过滤级别为警告
    
  • 2.按标签全局过滤

    对所有日志执行按标签过滤,只有包含标签信息的日志才允许输出

    SHARP_log_global_filter_tag_set(tag)

    • tag : 设定的过滤标签

    SHARP_log_global_filter_tag_set("wifi")         #设置过滤标签为 wifi
    SHARP_log_global_filter_tag_set("driver")       #设置过滤标签为 driver
    SHARP_log_global_filter_tag_set("")             #取消标签过滤
    
  • 3.按级别全局过

    动态的修改全局日志过滤级别,低于过滤级别的日志都将停止输出

    SHARP_log_global_filter_lvl_set(level)

    • level : 设定的全局过滤级别

    SHARP_log_global_filter_lvl_set(LOG_FILTER_LVL_SILENT)    #关闭全部日志
    SHARP_log_global_filter_lvl_set(LOG_FILTER_LVL_ALL)       #开启全部日志
    SHARP_log_global_filter_lvl_set(LOG_LVL_WARNING)          #设置全局过滤级别为警告
    
  • 4.按关键词全局过滤

    对所有日志执行按关键词过滤,包含关键词信息的日志才允许输出

    SHARP_log_global_filter_kw_set(keyword)

    • keyword : 设定的过滤关键词

    SHARP_log_global_filter_kw_set("wifi")   #设置过滤关键词为 wifi
    SHARP_log_global_filter_kw_set("")       #清空过滤关键词