ESPHome 2025.5.2
|
Logger component for all ESPHome logging. More...
#include <logger.h>
Public Member Functions | |
Logger (uint32_t baud_rate, size_t tx_buffer_size) | |
void | init_log_buffer (size_t total_buffer_size) |
void | loop () override |
void | set_baud_rate (uint32_t baud_rate) |
Manually set the baud rate for serial, set to 0 to disable. | |
uint32_t | get_baud_rate () const |
Stream * | get_hw_serial () const |
uart_port_t | get_uart_num () const |
void | create_pthread_key () |
void | set_uart_selection (UARTSelection uart_selection) |
UARTSelection | get_uart () const |
Get the UART used by the logger. | |
void | set_log_level (int level) |
Set the default log level for this logger. | |
void | set_log_level (const std::string &tag, int log_level) |
Set the log level of the specified tag. | |
int | get_log_level () |
void | pre_setup () |
Set up this component. | |
void | dump_config () override |
int | level_for (const char *tag) |
void | add_on_log_callback (std::function< void(int, const char *, const char *)> &&callback) |
Register a callback that will be called for every log message sent. | |
void | add_listener (std::function< void(int)> &&callback) |
float | get_setup_priority () const override |
void | log_vprintf_ (int level, const char *tag, int line, const char *format, va_list args) |
void | log_vprintf_ (int level, const char *tag, int line, const __FlashStringHelper *format, va_list args) |
![]() | |
virtual void | setup () |
Where the component's initialization should happen. | |
float | get_actual_setup_priority () const |
void | set_setup_priority (float priority) |
virtual float | get_loop_priority () const |
priority of loop(). | |
void | call () |
virtual void | on_shutdown () |
virtual void | on_safe_shutdown () |
uint32_t | get_component_state () const |
virtual void | mark_failed () |
Mark this component as failed. | |
void | mark_failed (const char *message) |
bool | is_failed () const |
bool | is_ready () const |
virtual bool | can_proceed () |
bool | status_has_warning () const |
bool | status_has_error () const |
void | status_set_warning (const char *message="unspecified") |
void | status_set_error (const char *message="unspecified") |
void | status_clear_warning () |
void | status_clear_error () |
void | status_momentary_warning (const std::string &name, uint32_t length=5000) |
void | status_momentary_error (const std::string &name, uint32_t length=5000) |
bool | has_overridden_loop () const |
void | set_component_source (const char *source) |
Set where this component was loaded from for some debug messages. | |
const char * | get_component_source () const |
Get the integration where this component was declared as a string. | |
bool | should_warn_of_blocking (uint32_t blocking_time) |
Protected Member Functions | |
void | call_log_callbacks_ (int level, const char *tag, const char *msg) |
void | write_msg_ (const char *msg) |
void HOT | format_log_to_buffer_with_terminator_ (int level, const char *tag, int line, const char *format, va_list args, char *buffer, int *buffer_at, int buffer_size) |
void HOT | log_message_to_buffer_and_send_ (int level, const char *tag, int line, const char *format, va_list args) |
void | write_body_to_buffer_ (const char *value, size_t length, char *buffer, int *buffer_at, int buffer_size) |
void | printf_to_buffer_ (char *buffer, int *buffer_at, int buffer_size, const char *format,...) |
const char * | get_uart_selection_ () |
const char *HOT | get_thread_name_ () |
bool HOT | check_and_set_task_log_recursion_ (bool is_main_task) |
void HOT | reset_task_log_recursion_ (bool is_main_task) |
void HOT | write_header_to_buffer_ (int level, const char *tag, int line, const char *thread_name, char *buffer, int *buffer_at, int buffer_size) |
void HOT | format_body_to_buffer_ (char *buffer, int *buffer_at, int buffer_size, const char *format, va_list args) |
void HOT | write_footer_to_buffer_ (char *buffer, int *buffer_at, int buffer_size) |
![]() | |
virtual void | call_loop () |
virtual void | call_setup () |
virtual void | call_dump_config () |
void | set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f) |
Set an interval function with a unique name. | |
void | set_interval (uint32_t interval, std::function< void()> &&f) |
bool | cancel_interval (const std::string &name) |
Cancel an interval function. | |
void | set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
Set an retry function with a unique name. | |
void | set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
bool | cancel_retry (const std::string &name) |
Cancel a retry function. | |
void | set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f) |
Set a timeout function with a unique name. | |
void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
bool | cancel_timeout (const std::string &name) |
Cancel a timeout function. | |
void | defer (const std::string &name, std::function< void()> &&f) |
Defer a callback to the next loop() call. | |
void | defer (std::function< void()> &&f) |
Defer a callback to the next loop() call. | |
bool | cancel_defer (const std::string &name) |
Cancel a defer callback using the specified name, name must not be empty. | |
Protected Attributes | |
uint32_t | baud_rate_ |
char * | tx_buffer_ {nullptr} |
int | tx_buffer_at_ {0} |
int | tx_buffer_size_ {0} |
UARTSelection | uart_ {UART_SELECTION_UART0} |
Stream * | hw_serial_ {nullptr} |
uart_port_t | uart_num_ |
std::map< std::string, int > | log_levels_ {} |
CallbackManager< void(int, const char *, const char *)> | log_callback_ {} |
int | current_level_ {ESPHOME_LOG_LEVEL_VERY_VERBOSE} |
std::unique_ptr< logger::TaskLogBuffer > | log_buffer_ |
bool | main_task_recursion_guard_ {false} |
pthread_key_t | log_recursion_key_ |
bool | global_recursion_guard_ {false} |
CallbackManager< void(int)> | level_callback_ {} |
void * | main_task_ = nullptr |
![]() | |
uint32_t | component_state_ {0x0000} |
State of this component. | |
float | setup_priority_override_ {NAN} |
const char * | component_source_ {nullptr} |
uint32_t | warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_MS} |
std::string | error_message_ {} |
Logger component for all ESPHome logging.
This class implements a multi-platform logging system with protection against recursion.
Recursion Protection Strategy:
We use pthread TLS via pthread_key_create to create a unique key for storing task-specific recursion state, which:
|
explicit |
Definition at line 145 of file logger.cpp.
|
inline |
void esphome::logger::Logger::add_on_log_callback | ( | std::function< void(int, const char *, const char *)> && | callback | ) |
Register a callback that will be called for every log message sent.
Definition at line 217 of file logger.cpp.
|
protected |
Definition at line 132 of file logger.cpp.
|
inlineprotected |
|
inline |
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 223 of file logger.cpp.
|
inlineprotected |
|
inlineprotected |
|
inline |
|
inline |
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 220 of file logger.cpp.
|
inlineprotected |
UARTSelection esphome::logger::Logger::get_uart | ( | ) | const |
Get the UART used by the logger.
Definition at line 214 of file logger.cpp.
|
inline |
|
protected |
Definition at line 210 of file logger_esp32.cpp.
void esphome::logger::Logger::init_log_buffer | ( | size_t | total_buffer_size | ) |
Definition at line 153 of file logger.cpp.
|
inline |
Definition at line 125 of file logger.cpp.
|
inlineprotected |
void esphome::logger::Logger::log_vprintf_ | ( | int | level, |
const char * | tag, | ||
int | line, | ||
const __FlashStringHelper * | format, | ||
va_list | args ) |
Definition at line 88 of file logger.cpp.
void HOT esphome::logger::Logger::log_vprintf_ | ( | int | level, |
const char * | tag, | ||
int | line, | ||
const char * | format, | ||
va_list | args ) |
Definition at line 27 of file logger.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 159 of file logger.cpp.
void esphome::logger::Logger::pre_setup | ( | ) |
Set up this component.
Definition at line 97 of file logger_esp32.cpp.
|
inlineprotected |
|
inlineprotected |
void esphome::logger::Logger::set_baud_rate | ( | uint32_t | baud_rate | ) |
Manually set the baud rate for serial, set to 0 to disable.
Definition at line 210 of file logger.cpp.
void esphome::logger::Logger::set_log_level | ( | const std::string & | tag, |
int | log_level ) |
Set the log level of the specified tag.
Definition at line 211 of file logger.cpp.
void esphome::logger::Logger::set_log_level | ( | int | level | ) |
Set the default log level for this logger.
Definition at line 242 of file logger.cpp.
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
protected |
Definition at line 175 of file logger_esp32.cpp.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |