ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
logger_host.cpp
Go to the documentation of this file.
1#if defined(USE_HOST)
2#include "logger.h"
3
4namespace esphome::logger {
5
6void HOT Logger::write_msg_(const char *msg, uint16_t len) {
7 static constexpr size_t TIMESTAMP_LEN = 10; // "[HH:MM:SS]"
8 static constexpr size_t HEADROOM = 128; // Extra space for ANSI codes, newline, etc.
9 char buffer[TIMESTAMP_LEN + ESPHOME_LOGGER_TX_BUFFER_SIZE + HEADROOM];
10
11 time_t rawtime;
12 time(&rawtime);
13 struct tm timeinfo;
14 localtime_r(&rawtime, &timeinfo); // Thread-safe version
15 size_t pos = strftime(buffer, TIMESTAMP_LEN + 1, "[%H:%M:%S]", &timeinfo);
16
17 // Copy message (with newline already included by caller)
18 size_t copy_len = std::min(static_cast<size_t>(len), sizeof(buffer) - pos);
19 memcpy(buffer + pos, msg, copy_len);
20 pos += copy_len;
21
22 // Single write for everything
23 fwrite(buffer, 1, pos, stdout);
24}
25
26void Logger::pre_setup() { global_logger = this; }
27
28} // namespace esphome::logger
29
30#endif
void write_msg_(const char *msg, uint16_t len)
void pre_setup()
Set up this component.
Logger * global_logger
Definition logger.cpp:278
std::string size_t len
Definition helpers.h:817
size_t size_t pos
Definition helpers.h:854
struct tm * localtime_r(const time_t *timer, struct tm *result)
Definition posix_tz.cpp:472