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("") #清空过滤关键词