|
| 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 () |
|
virtual bool | teardown () |
| Called during teardown to allow component to gracefully finish operations.
|
|
virtual void | on_powerdown () |
| Called after teardown is complete to power down hardware.
|
|
uint8_t | get_component_state () const |
|
void | reset_to_construction_state () |
| Reset this component back to the construction state to allow setup to run again.
|
|
bool | is_in_loop_state () const |
| Check if this component has completed setup and is in the loop state.
|
|
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) |
|
|
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.
|
|
Logger component for all ESPHome logging.
This class implements a multi-platform logging system with protection against recursion.
Recursion Protection Strategy:
- On ESP32: Uses task-specific recursion guards
- Main task: Uses a dedicated boolean member variable for efficiency
- Other tasks: Uses pthread TLS with a dynamically allocated key for task-specific state
- On other platforms: Uses a simple global recursion guard
We use pthread TLS via pthread_key_create to create a unique key for storing task-specific recursion state, which:
- Efficiently handles multiple tasks without locks or mutexes
- Works with ESP-IDF's pthread implementation that uses a linked list for TLS variables
- Avoids the limitations of the fixed FreeRTOS task local storage slots
Definition at line 104 of file logger.h.