Prints y Logeo

Ya que el codigo se ejecuta en un microcontrolador, no podemos usar un debugger como lo hacemos en un computador. Por lo tanto, debemos usar otras técnicas para depurar y monitorear nuestro código. En este tutorial, veremos como imprimir mensajes en la consola y como usar el sistema de logeo de ESP-IDF, el cual sera la forma principal de depurar y monitorear nuestro código.

Prints Básicos:

Simplemente usa la función printf() como lo harías en cualquier programa de C. Por ejemplo:

printf("Hola Mundo!\n");

Sistema de Logeo:

ESP-IDF viene con un conjunto de macros para logeo que te permiten imprimir mensajes con diferentes niveles de severidad. Estos son:

-ESP_LOGE(TAG, formato, ...): Error. Situaciones que deberían ser tratadas por el programador.

-ESP_LOGW(TAG, formato, ...): Advertencia. Algo inusual, pero no necesariamente erróneo.

-ESP_LOGI(TAG, formato, ...): Información. Usualmente para depuración.

-ESP_LOGD(TAG, formato, ...): Depuración. Información detallada para depuración.

-ESP_LOGV(TAG, formato, ...): Verbose. Información aún más detallada.

El TAG es una cadena que ayuda a identificar de qué parte del código proviene el mensaje. Por ejemplo:

#include "esp_log.h" // Incluye el encabezado necesario

#define TAG "APP_MAIN"
ESP_LOGI(TAG, "Iniciando aplicación");

Esto imprimirá el mensaje “Iniciando aplicación” en la consola, junto con el TAG “APP_MAIN” y el nivel de severidad “I” (Información).

Configuración del Nivel de Logeo:

Puedes definir el nivel de logeo que desees que se muestre. Por ejemplo, si solo quieres ver logs de errores y advertencias, puedes configurarlo así. Esto se hace generalmente a través del menú de configuración (menuconfig) bajo la opción Component config > Log output. El valor por defecto es "Info", por lo que se mostrarán todos los mensajes excepto los de depuración y verbose.

Formato

Las funciones de logeo soportan formatos similares a printf(). Por ejemplo:

#include "esp_log.h" // Incluye el encabezado necesario
#define TAG "APP_MAIN"

int valor = 42;
float valor2 = 3.1415;
ESP_LOGI(TAG, "El valor es %d %f", valor, valor2);