Index: cloud_sync.py =================================================================== diff -u -r79dadd7422855193f345beced530c6b92fc49b3a -r8dda975c3b3303764304ed174177c22bbf0f6367 --- cloud_sync.py (.../cloud_sync.py) (revision 79dadd7422855193f345beced530c6b92fc49b3a) +++ cloud_sync.py (.../cloud_sync.py) (revision 8dda975c3b3303764304ed174177c22bbf0f6367) @@ -150,11 +150,15 @@ # Heartbeat gets the idempotent lane + g_config so it can drain # rotated CS-log files one-per-tick when that lane is idle. Registration # mode sets send_heartbeat=False below, so opportunistic CS-log upload - # stays inert during registration. + # stays inert during registration. log_handler drives the silent-day + # force-rotate path so devices that don't emit (e.g. logLevel=ERROR + # with no errors) still produce one rotated file per UTC day for the + # opportunistic upload step above to send. heartbeat_provider = HeartBeatProvider(logger=app.logger, network_request_handler=network_request_handler, output_channel=output_channel, idempotent_network_request_handler=idempotent_network_request_handler, - g_config=g_config) + g_config=g_config, + log_handler=logconf.log_handler) # CS-log uploads (SEND_CS_LOG) go through the idempotent lane. logconf.set_network_provider(network_request_handler=idempotent_network_request_handler)