1
0
mirror of https://github.com/esphome/esphome.git synced 2026-02-08 08:41:59 +00:00
This commit is contained in:
J. Nick Koston
2026-02-04 06:04:27 +01:00
parent f0199d5de9
commit 70debb1c98
2 changed files with 12 additions and 8 deletions

View File

@@ -36,9 +36,7 @@ void HOT Logger::log_vprintf_(uint8_t level, const char *tag, int line, const ch
// Fast path: main thread, no recursion (99.9% of all logs)
if (is_main_task && !this->main_task_recursion_guard_) [[likely]] {
RecursionGuard guard(this->main_task_recursion_guard_);
// Format and send to both console and callbacks
this->log_message_to_buffer_and_send_(level, tag, line, format, args);
this->log_message_to_buffer_and_send_(this->main_task_recursion_guard_, level, tag, line, format, args);
return;
}
@@ -117,11 +115,7 @@ void HOT Logger::log_vprintf_(uint8_t level, const char *tag, int line, const ch
if (level > this->level_for(tag) || global_recursion_guard_)
return;
RecursionGuard guard(global_recursion_guard_);
LogBuffer buf(this->tx_buffer_, this->tx_buffer_at_, this->tx_buffer_size_);
this->format_log_to_buffer_with_terminator_(level, tag, line, format, args, buf);
this->notify_listeners_(level, tag);
this->write_log_buffer_to_console_(buf);
this->log_message_to_buffer_and_send_(global_recursion_guard_, level, tag, line, format, args);
}
#endif // USE_ESP32 / USE_HOST / USE_LIBRETINY

View File

@@ -443,6 +443,16 @@ class Logger : public Component {
}
}
// Helper to format and send a log message to both console and listeners
inline void HOT log_message_to_buffer_and_send_(bool &recursion_guard, uint8_t level, const char *tag, int line,
const char *format, va_list args) {
RecursionGuard guard(recursion_guard);
LogBuffer buf(this->tx_buffer_, this->tx_buffer_at_, this->tx_buffer_size_);
this->format_log_to_buffer_with_terminator_(level, tag, line, format, args, buf);
this->notify_listeners_(level, tag);
this->write_log_buffer_to_console_(buf);
}
#ifdef USE_ESPHOME_TASK_LOG_BUFFER
// Helper to format a pre-formatted message from the task log buffer and notify listeners
// Used by process_messages_ to avoid code duplication between ESP32 and host platforms