|
| | 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 (uint8_t level) |
| | Set the default log level for this logger.
|
| |
| void | set_log_level (const char *tag, uint8_t log_level) |
| | Set the log level of the specified tag.
|
| |
| uint8_t | get_log_level () |
| |
| void | pre_setup () |
| | Set up this component.
|
| |
| void | dump_config () override |
| |
| uint8_t | level_for (const char *tag) |
| |
| void | add_on_log_callback (std::function< void(uint8_t, const char *, const char *, size_t)> &&callback) |
| | Register a callback that will be called for every log message sent.
|
| |
| void | add_listener (std::function< void(uint8_t)> &&callback) |
| |
| float | get_setup_priority () const override |
| |
| void | log_vprintf_ (uint8_t level, const char *tag, int line, const char *format, va_list args) |
| |
| void | log_vprintf_ (uint8_t 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) |
| |
| void | disable_loop () |
| | Disable this component's loop.
|
| |
| void | enable_loop () |
| | Enable this component's loop.
|
| |
| void | enable_loop_soon_any_context () |
| | Thread and ISR-safe version of enable_loop() that can be called from any context.
|
| |
| 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=nullptr) |
| |
| void | status_set_warning (const LogString *message) |
| |
| void | status_set_error (const char *message=nullptr) |
| |
| 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 LogString *source) |
| | Set where this component was loaded from for some debug messages.
|
| |
| const LogString * | get_component_log_str () const |
| | Get the integration where this component was declared as a LogString for logging.
|
| |
| bool | should_warn_of_blocking (uint32_t blocking_time) |
| |
|
| void | process_messages_ () |
| |
| void | write_msg_ (const char *msg) |
| |
| void HOT | format_log_to_buffer_with_terminator_ (uint8_t level, const char *tag, int line, const char *format, va_list args, char *buffer, uint16_t *buffer_at, uint16_t buffer_size) |
| |
| void HOT | log_message_to_buffer_and_send_ (uint8_t 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, uint16_t *buffer_at, uint16_t buffer_size) |
| |
| const LogString * | 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_ (uint8_t level, const char *tag, int line, const char *thread_name, char *buffer, uint16_t *buffer_at, uint16_t buffer_size) |
| |
| void HOT | format_body_to_buffer_ (char *buffer, uint16_t *buffer_at, uint16_t buffer_size, const char *format, va_list args) |
| |
| void HOT | write_footer_to_buffer_ (char *buffer, uint16_t *buffer_at, uint16_t buffer_size) |
| |
| void | disable_loop_when_buffer_empty_ () |
| |
| virtual void | call_loop () |
| |
| virtual void | call_setup () |
| |
| virtual void | call_dump_config () |
| |
| void | set_component_state_ (uint8_t state) |
| | Helper to set component state (clears state bits and sets new state)
|
| |
| 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 (const char *name, uint32_t interval, std::function< void()> &&f) |
| | Set an interval function with a const char* name.
|
| |
| void | set_interval (uint32_t interval, std::function< void()> &&f) |
| |
| bool | cancel_interval (const std::string &name) |
| | Cancel an interval function.
|
| |
| bool | cancel_interval (const char *name) |
| |
| 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 (const char *name, uint32_t timeout, std::function< void()> &&f) |
| | Set a timeout function with a const char* name.
|
| |
| void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
| |
| bool | cancel_timeout (const std::string &name) |
| | Cancel a timeout function.
|
| |
| bool | cancel_timeout (const char *name) |
| |
| void | defer (const std::string &name, std::function< void()> &&f) |
| | Defer a callback to the next loop() call.
|
| |
| void | defer (const char *name, std::function< void()> &&f) |
| | Defer a callback to the next loop() call with a const char* name.
|
| |
| 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 116 of file logger.h.