feat(logger): add logging macros for consistent logging across components

This commit is contained in:
HendrikRauh 2026-03-07 21:02:31 +01:00
parent 9a11453fbc
commit a2d51540b7
7 changed files with 77 additions and 33 deletions

View file

@ -0,0 +1 @@
idf_component_register(INCLUDE_DIRS include)

View file

@ -0,0 +1,43 @@
/**
* @file logger.h
* @brief Project-wide logging macros based on ESP-IDF's logging library.
*
* This header provides a set of simple logging macros (LOGE, LOGW, LOGI, etc.)
* that wrap the underlying ESP-IDF logging functions (esp_log_e, esp_log_w,
* etc.).
*
* @section usage Usage
* To use these macros, a `LOG_TAG` should be defined before including this
* header. The `LOG_TAG` is a string that identifies the source of the log
* messages, typically the component or file name. If `LOG_TAG` is not defined,
* a default tag "CHAOS" will be used.
*
* @example
* #define LOG_TAG "MY_COMPONENT"
* #include "logger.h"
*
* void my_function() {
* LOGI("This is an informational message.");
* LOGE("This is an error message with a value: %d", 42);
* }
*/
#pragma once
#include "esp_log.h"
#ifndef LOG_TAG
#define LOG_TAG "CHAOS"
#endif
/** @brief Log a message at Error level. */
#define LOGE(...) ESP_LOGE(LOG_TAG, __VA_ARGS__)
/** @brief Log a message at Warning level. */
#define LOGW(...) ESP_LOGW(LOG_TAG, __VA_ARGS__)
/** @brief Log a message at Info level. */
#define LOGI(...) ESP_LOGI(LOG_TAG, __VA_ARGS__)
/** @brief Log a message at Debug level. */
#define LOGD(...) ESP_LOGD(LOG_TAG, __VA_ARGS__)
/** @brief Log a message at Verbose level. */
#define LOGV(...) ESP_LOGV(LOG_TAG, __VA_ARGS__)

View file

@ -2,5 +2,5 @@ idf_component_register(
SRCS "src/storage.c" SRCS "src/storage.c"
INCLUDE_DIRS "include" INCLUDE_DIRS "include"
REQUIRES joltwallet__littlefs REQUIRES joltwallet__littlefs
PRIV_REQUIRES vfs PRIV_REQUIRES vfs logger
) )

View file

@ -1,10 +1,10 @@
#define LOG_TAG "STORE"
#include "storage.h" #include "storage.h"
#include "esp_littlefs.h" #include "esp_littlefs.h"
#include "esp_log.h"
#include "esp_vfs.h" #include "esp_vfs.h"
#include "logger.h"
static const char *TAG = "STORAGE";
static const char *LITTLEFS_MOUNT_POINT = "/data"; static const char *LITTLEFS_MOUNT_POINT = "/data";
esp_err_t storage_init(void) { esp_err_t storage_init(void) {
@ -19,11 +19,11 @@ esp_err_t storage_init(void) {
if (ret != ESP_OK) { if (ret != ESP_OK) {
if (ret == ESP_FAIL) { if (ret == ESP_FAIL) {
ESP_LOGE(TAG, "Failed to mount LittleFS or format filesystem"); LOGE("Failed to mount LittleFS or format filesystem");
} else if (ret == ESP_ERR_INVALID_STATE) { } else if (ret == ESP_ERR_INVALID_STATE) {
ESP_LOGE(TAG, "ESP_ERR_INVALID_STATE"); LOGE("ESP_ERR_INVALID_STATE");
} else { } else {
ESP_LOGE(TAG, "Failed to initialize LittleFS: %s", esp_err_to_name(ret)); LOGE("Failed to initialize LittleFS: %s", esp_err_to_name(ret));
} }
return ret; return ret;
} }
@ -31,10 +31,10 @@ esp_err_t storage_init(void) {
size_t total = 0, used = 0; size_t total = 0, used = 0;
ret = esp_littlefs_info(conf.partition_label, &total, &used); ret = esp_littlefs_info(conf.partition_label, &total, &used);
if (ret == ESP_OK) { if (ret == ESP_OK) {
ESP_LOGI(TAG, "LittleFS mounted at %s. Total: %d bytes, Used: %d bytes", LOGI("LittleFS mounted at %s. Total: %d bytes, Used: %d bytes",
LITTLEFS_MOUNT_POINT, total, used); LITTLEFS_MOUNT_POINT, total, used);
} else { } else {
ESP_LOGE(TAG, "Failed to get LittleFS information"); LOGE("Failed to get LittleFS information");
} }
return ESP_OK; return ESP_OK;

View file

@ -3,5 +3,5 @@ idf_component_register(
"src/wifi.c" "src/wifi.c"
INCLUDE_DIRS "include" INCLUDE_DIRS "include"
REQUIRES esp_http_server storage REQUIRES esp_http_server storage
PRIV_REQUIRES freertos esp_wifi esp_event esp_netif nvs_flash PRIV_REQUIRES freertos esp_wifi esp_event esp_netif nvs_flash logger
) )

View file

@ -1,3 +1,5 @@
#define LOG_TAG "WEBSRV"
#include "web_server.h" #include "web_server.h"
#include <ctype.h> #include <ctype.h>
@ -6,13 +8,11 @@
#include <string.h> #include <string.h>
#include "esp_err.h" #include "esp_err.h"
#include "esp_log.h"
#include "freertos/FreeRTOS.h" #include "freertos/FreeRTOS.h"
#include "freertos/task.h" #include "freertos/task.h"
#include "logger.h"
#include "storage.h" #include "storage.h"
static const char *TAG = "WEBSERVER";
// Default configuration values // Default configuration values
#define WEBSERVER_DEFAULT_PORT 80 #define WEBSERVER_DEFAULT_PORT 80
#define WEBSERVER_DEFAULT_MAX_HANDLERS 32 #define WEBSERVER_DEFAULT_MAX_HANDLERS 32
@ -77,7 +77,7 @@ static esp_err_t static_file_handler(httpd_req_t *req) {
FILE *f = fopen(filepath, "r"); FILE *f = fopen(filepath, "r");
if (!f) { if (!f) {
ESP_LOGW(TAG, "File not found: %s", filepath); LOGW("File not found: %s", filepath);
httpd_resp_send_404(req); httpd_resp_send_404(req);
return ESP_OK; return ESP_OK;
} }
@ -91,7 +91,7 @@ static esp_err_t static_file_handler(httpd_req_t *req) {
size_t read_len; size_t read_len;
while ((read_len = fread(buf, 1, sizeof(buf), f)) > 0) { while ((read_len = fread(buf, 1, sizeof(buf), f)) > 0) {
if (httpd_resp_send_chunk(req, buf, read_len) != ESP_OK) { if (httpd_resp_send_chunk(req, buf, read_len) != ESP_OK) {
ESP_LOGW(TAG, "Failed to send data chunk for %s", filepath); LOGW("Failed to send data chunk for %s", filepath);
break; break;
} }
} }
@ -116,27 +116,27 @@ static esp_err_t health_check_handler(httpd_req_t *req) {
*/ */
static void webserver_task(void *arg) { static void webserver_task(void *arg) {
(void)arg; // Unused parameter (void)arg; // Unused parameter
ESP_LOGI(TAG, "Web server task started"); LOGI("Web server task started");
// Keep task alive - the server runs in the background // Keep task alive - the server runs in the background
while (s_server_handle != NULL) { while (s_server_handle != NULL) {
vTaskDelay(pdMS_TO_TICKS(10000)); // 10 second check interval vTaskDelay(pdMS_TO_TICKS(10000)); // 10 second check interval
} }
ESP_LOGI(TAG, "Web server task ending"); LOGI("Web server task ending");
vTaskDelete(NULL); vTaskDelete(NULL);
} }
httpd_handle_t webserver_start(const webserver_config_t *config) { httpd_handle_t webserver_start(const webserver_config_t *config) {
if (s_server_handle != NULL) { if (s_server_handle != NULL) {
ESP_LOGW(TAG, "Web server already running"); LOGW("Web server already running");
return s_server_handle; return s_server_handle;
} }
// Initialize LittleFS // Initialize LittleFS
esp_err_t ret = storage_init(); esp_err_t ret = storage_init();
if (ret != ESP_OK) { if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to initialize storage"); LOGE("Failed to initialize storage");
return NULL; return NULL;
} }
@ -163,12 +163,12 @@ httpd_handle_t webserver_start(const webserver_config_t *config) {
// Start HTTP server // Start HTTP server
ret = httpd_start(&s_server_handle, &http_config); ret = httpd_start(&s_server_handle, &http_config);
if (ret != ESP_OK) { if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to start HTTP server: %s", esp_err_to_name(ret)); LOGE("Failed to start HTTP server: %s", esp_err_to_name(ret));
s_server_handle = NULL; s_server_handle = NULL;
return NULL; return NULL;
} }
ESP_LOGI(TAG, "HTTP server started on port %d", port); LOGI("HTTP server started on port %d", port);
// Register default handlers // Register default handlers
// Health check endpoint // Health check endpoint
@ -197,13 +197,13 @@ httpd_handle_t webserver_start(const webserver_config_t *config) {
&s_server_task_handle); &s_server_task_handle);
if (task_ret != pdPASS) { if (task_ret != pdPASS) {
ESP_LOGE(TAG, "Failed to create web server task"); LOGE("Failed to create web server task");
httpd_stop(s_server_handle); httpd_stop(s_server_handle);
s_server_handle = NULL; s_server_handle = NULL;
return NULL; return NULL;
} }
ESP_LOGI(TAG, "Web server initialized successfully"); LOGI("Web server initialized successfully");
return s_server_handle; return s_server_handle;
} }
@ -221,7 +221,7 @@ void webserver_stop(httpd_handle_t server) {
s_server_task_handle = NULL; s_server_task_handle = NULL;
} }
ESP_LOGI(TAG, "Web server stopped"); LOGI("Web server stopped");
} }
esp_err_t webserver_register_handler(httpd_handle_t server, esp_err_t webserver_register_handler(httpd_handle_t server,
@ -232,11 +232,10 @@ esp_err_t webserver_register_handler(httpd_handle_t server,
esp_err_t ret = httpd_register_uri_handler(server, uri_handler); esp_err_t ret = httpd_register_uri_handler(server, uri_handler);
if (ret == ESP_OK) { if (ret == ESP_OK) {
ESP_LOGI(TAG, "Registered handler: %s [%d]", uri_handler->uri, LOGI("Registered handler: %s [%d]", uri_handler->uri, uri_handler->method);
uri_handler->method);
} else { } else {
ESP_LOGE(TAG, "Failed to register handler %s: %s", uri_handler->uri, LOGE("Failed to register handler %s: %s", uri_handler->uri,
esp_err_to_name(ret)); esp_err_to_name(ret));
} }
return ret; return ret;

View file

@ -1,14 +1,15 @@
#define LOG_TAG "WIFI"
#include "wifi.h" #include "wifi.h"
#include <string.h> #include <string.h>
#include "esp_event.h" #include "esp_event.h"
#include "esp_log.h"
#include "esp_netif.h" #include "esp_netif.h"
#include "esp_wifi.h" #include "esp_wifi.h"
#include "logger.h"
#include "nvs_flash.h" #include "nvs_flash.h"
static const char *TAG = "WIFI";
static bool s_wifi_started = false; static bool s_wifi_started = false;
esp_err_t wifi_start_ap(const char *ssid, const char *password, uint8_t channel, esp_err_t wifi_start_ap(const char *ssid, const char *password, uint8_t channel,
@ -69,7 +70,7 @@ esp_err_t wifi_start_ap(const char *ssid, const char *password, uint8_t channel,
ESP_ERROR_CHECK(esp_wifi_start()); ESP_ERROR_CHECK(esp_wifi_start());
s_wifi_started = true; s_wifi_started = true;
ESP_LOGI(TAG, "WiFi AP started: SSID=%s channel=%u", ssid, channel); LOGI("WiFi AP started: SSID=%s channel=%u", ssid, channel);
return ESP_OK; return ESP_OK;
} }
@ -81,5 +82,5 @@ void wifi_stop_ap(void) {
esp_wifi_stop(); esp_wifi_stop();
esp_wifi_deinit(); esp_wifi_deinit();
s_wifi_started = false; s_wifi_started = false;
ESP_LOGI(TAG, "WiFi AP stopped"); LOGI("WiFi AP stopped");
} }