【ESP-IDF】日志

文章介绍了ESP-IDF中的日志模块,包括头文件esp_log.h的使用,展示了如何通过ESP_LOG宏输出不同级别的日志信息,如错误、警告、信息、调试和详细日志。实际场景中,可以通过调整日志级别以便在需要时查看更详细的调试信息,例如结合按钮或密码触发更高级别的日志输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍ESP-IDF中的日志模块

首先我们来介绍一下ESP-IDF中用于日志模块的头文件:esp_log.h

我们在代码中使用#include “esp_log.h”引入即可,关于它的解释见如下:

你好,这是一个C语言的预处理指令,用于包含一个头文件到你的源代码中。头文件通常包含了一些函数声明,宏定义,类型定义等,方便你使用其他模块或库的功能。在这个例子中,你包含了esp_log头文件,它是ESP-IDF提供的一个日志模块,可以让你在串口或JTAG输出不同级别的日志信息,帮助你调试你的应用程序。你可以参考这个文档来了解更多关于esp_log模块的用法:https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-reference/system/log.html

简单来说,以下做一些示例讲解:

#include <stdio.h>
#include "esp_log.h
void app_main(void)
{
    // E Error
    ESP_LOGE("交通灯", "不亮了");
    // W Warn
    ESP_LOGW("交通灯", "灯泡寿命还有5%%");
    // I Information
    ESP_LOGI("交通灯", "交通灯寿命还有75%%");

    // D Debug
    ESP_LOGD("交通灯", "灯泡亮度1000,已使用200小时");
    // V verbose
    ESP_LOGV("交通灯", "灯丝还有5丝厚度,氧化程度0.23,寿命正常");

    ESP_LOGE("人行横道", "有人闯红灯!");
    ESP_LOGW("人行横道", "现在是红灯,禁止通行");
    ESP_LOGI("人行横道", "20秒后是绿灯");
}

其中,前面三项EWI是给用户看的,是用户需要的信息,而后面两项DV是给程序员看的
因此我们可以发现,在输出时,后两项不会在终端输出
在这里插入图片描述
那么如何能够显示出程序员能看到的信息呢?

首先我们进入menuconfig,输入log,找到log output

在这里插入图片描述
修改info改为verbose,可以发现全部输出了

在这里插入图片描述
在这里插入图片描述

实际场景中的应用

对于我们带有显示屏的应用来说,我们可以搭配上一个按钮进行程序员调试触发,当点击按钮或者输入相应调试密码时,则将esp_log输出信息的等级调高(即可看到DV),如下代码所示:

#include <stdio.h>
#include <stdbool.h> // stdbool.h是一个C标准库的头文件,它定义了bool类型和true/false常量,用于表示布尔值。
#include "esp_log.h"
const char *tagTraffic = "交通灯";
bool secretlog = true;
void app_main(void)
{
    if (secretlog)
    {
        // 将日志输出等级调为VERBOSE
        esp_log_level_set(tagTraffic, ESP_LOG_VERBOSE);
    }
    else
    {
        // 将日志输出等级调为INFO
        esp_log_level_set(tagTraffic, ESP_LOG_INFO);
    }
    // E Error
    ESP_LOGE(tagTraffic, "不亮了");
    // W Warn
    ESP_LOGW(tagTraffic, "灯泡寿命还有5%%"); // "%"是一个特殊字符,在字符串输出时需要用两个即"%%"才能让程序识别
    // I Information
    ESP_LOGI(tagTraffic, "交通灯寿命还有75%%");
    // D Debug
    ESP_LOGD(tagTraffic, "灯泡亮度1000,已使用200小时");
    // V verbose
    ESP_LOGV(tagTraffic, "灯丝还有5丝厚度,氧化程度0.23,寿命正常");

    ESP_LOGE("人行横道", "有人闯红灯!");
    ESP_LOGW("人行横道", "现在是红灯,禁止通行");
    ESP_LOGI("人行横道", "20秒后是绿灯");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuZou 邹宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值