Index: cloud_sync.py =================================================================== diff -u -r8fd0a56808dafcfd65878b3cac8c69a67f62fb2d -r310ef16c9af029e06975aa86538d44ddd531af9a --- cloud_sync.py (.../cloud_sync.py) (revision 8fd0a56808dafcfd65878b3cac8c69a67f62fb2d) +++ cloud_sync.py (.../cloud_sync.py) (revision 310ef16c9af029e06975aa86538d44ddd531af9a) @@ -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)