From b8d120e74cbe38c8e41b7354a771261928221bf4 Mon Sep 17 00:00:00 2001 From: Matt Edholm Date: Fri, 15 May 2026 15:50:43 -0400 Subject: [PATCH] chore(devices): TEMP power_telemetry at error level to flush fingers_crossed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prod monolog wraps the main handler in fingers_crossed(action_level: error), so info-level logs sit in a 50-message buffer and get discarded at request end. That's why three deploy+bounce cycles produced zero power_telemetry lines in docker logs despite the unconditional log call. Logging at error level forces the buffer to flush to php://stderr → docker logs. Will be demoted when the surrounding TEMP block is removed. Co-Authored-By: Claude Opus 4.7 --- src/Controller/DeviceImageController.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Controller/DeviceImageController.php b/src/Controller/DeviceImageController.php index bb659f4..6c3e7da 100644 --- a/src/Controller/DeviceImageController.php +++ b/src/Controller/DeviceImageController.php @@ -96,7 +96,13 @@ class DeviceImageController extends AbstractController // controller filtering them out. Greppable via // `device.poll.power_telemetry`. Remove alongside the firmware's // NVS_KEY_PREV_* writes once validated. - $this->logger->info('device.poll.power_telemetry', [ + // TEMP: logged at error level (not info) so monolog's prod + // fingers_crossed handler flushes it to stderr → docker logs. + // INFO sits in a 50-message buffer that only flushes on a real + // error within the same request, so info-level diagnostic lines + // never reach the log stream. Demote when the surrounding TEMP + // block is removed. + $this->logger->error('device.poll.power_telemetry', [ 'mac' => $mac, 'prev_awake_ms' => $request->headers->get('X-Prev-Awake-Ms'), 'prev_panel_init_ms' => $request->headers->get('X-Prev-Panel-Init-Ms'),