日志打印--idf的esp32

头文件和依赖说明:

main.c

#include "esp_log.h"

===================================

CMakeList.txt

REQUIRES 
    log

日志功能的说明

1.日志分为多个类型,其中等级为ERROR > WARN > INFO > DEBUG > DERBOSE


2.函数显示如下,格式类似,只是最后一个代表类型的字母不同。

3.其中menuconfig的默认显示日志打印等级是INFO及以上,也就是只有ERROR 、WARN 、 INFO的日志会显示,如果需要打印别的类型的需要修改等级。

下面是修改路径,注意直接搜log首先看到的是Bootloader config的,不是程序工作的。需要往下滑

4.下面是没有设置下面两个等级的

5.下面是设置了显示下面两个等级的,但是设置之后也会导致烧录的时候多显示D和V类型的日志。

而下面的Maximum log verbosity则是允许esp_log_level_set修改后的打印范围。

日志功能的使用举例

输入一些debug内容

区分用户模式、开发者模式,由一个宏变量控制是否输出调试信息

先设置最低能显示info类型的内容,则debug和verbose类型不会输出

如下图,当前的is_debug == false,没有输出Debug和Info类型的内容

修改成true后

idf的esp_log_level_set是基于地址操作的

区分下面两个截图的内容,可以看到esp_log_level_set对字符串的操作不是基于变量名,而是基于地址的。

图一因为TAG1和TAG2的值不一样,所以只设置了TAG1的类型后,TAG2的日志不会被打印。

而图二TAG1和TAG2的值一样,所以哪怕只设置了TAG1,TAG2的日志也会被打印。

综合理解

1.menuconfig中设置的日志类型是整个工程允许的最低日志输出类型。

2.esp_log_level_set函数设置的是在工程最低日志输出范围内允许的修改,如果低于最低要求

Maximum log verbosity,那么就不会打印。(如下图)

3.而如果修改Maximum log verbosity为Verbose,则可以正常打印。

4.esp_log_level_set的变量设置是基于地址的,也就是相同数值的变量,哪怕是不同的变量名称也会同步设置。如下图,在TAG1 == TAG2的前提下,哪怕我只对TAG1进行了操作,TAG2的打印也同步触发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值