Context
PR #60 (8b6e7f0, "fix(communication): replace print() with structured logging") replaced the print() calls in request_handler.py with logger.info(). This regressed the readability of the inference status table (device / offload layer / acquisition / device compute / edge compute / net / total).
Problem
The table was designed as an aligned, human-readable grid emitted verbatim to stdout. Routing each row through logger.info() means every row is now prefixed by the logger formatter (src/server/logger/log.py:48):
%(asctime)s - %(levelname)-8s - %(file_info)-40s - ...%(message)s
Consequences:
- The ~70-char timestamp/level/file prefix breaks column alignment, so the table no longer lines up.
- Table rows are interleaved with every other
logger.info/debug (network speed, model registration, delay simulation, profiler), burying the "which layer / what timings" signal in verbose noise.
Proposed fix
Give the table its own dedicated console logger, decoupled from the diagnostic log stream:
src/server/logger/log.py: add a table_logger (server.table) with a plain %(message)s formatter, its own stdout handler, propagate=False, fixed at INFO so it stays visible regardless of the verbose setting.
src/server/communication/request_handler.py: route _print_inference_table_header / _print_inference_table_row through table_logger instead of logger.
This preserves the aligned table, keeps it separate from verbose diagnostics, and lets verbose: false silence the noise while still showing the table.
Follow-up to #12 / PR #60.
Context
PR #60 (
8b6e7f0, "fix(communication): replace print() with structured logging") replaced theprint()calls inrequest_handler.pywithlogger.info(). This regressed the readability of the inference status table (device / offload layer / acquisition / device compute / edge compute / net / total).Problem
The table was designed as an aligned, human-readable grid emitted verbatim to stdout. Routing each row through
logger.info()means every row is now prefixed by the logger formatter (src/server/logger/log.py:48):Consequences:
logger.info/debug(network speed, model registration, delay simulation, profiler), burying the "which layer / what timings" signal in verbose noise.Proposed fix
Give the table its own dedicated console logger, decoupled from the diagnostic log stream:
src/server/logger/log.py: add atable_logger(server.table) with a plain%(message)sformatter, its own stdout handler,propagate=False, fixed at INFO so it stays visible regardless of theverbosesetting.src/server/communication/request_handler.py: route_print_inference_table_header/_print_inference_table_rowthroughtable_loggerinstead oflogger.This preserves the aligned table, keeps it separate from verbose diagnostics, and lets
verbose: falsesilence the noise while still showing the table.Follow-up to #12 / PR #60.