What
The dhcp crate is the codebase's lone log:: facade island: 47 of the workspace's 50 log:: macro calls live in crates/dhcp (the other 3 are in crates/rpc), while everything else uses tracing:: -- ~3,380 calls. So dhcp's logs don't carry structured fields into the fleet's logfmt pipeline the way tracing:: logs do, and they may not even reach it.
Investigate first
- WHY dhcp uses
log:: -- most likely because it's built around dhcproto (its DHCP protocol dependency), which emits through the log facade, so dhcp matched it. Confirm.
- Whether
dhcp-server (the binary consuming carbide-dhcp) installs a log->tracing bridge (LogTracer / tracing-log). If it does, dhcp's log:: records reach the fleet subscriber but as unstructured messages; if not, they may be dropped entirely -- a real observability gap.
Then migrate
- Convert dhcp's ~47
log::{warn,info,error,debug,trace}! sites (and rpc's 3) to tracing::, passing values as structured fields (error = %e, %address, ...) instead of interpolating them.
- Decide how to handle
dhcproto's own log:: output (keep a bridge for the dependency's logs, or leave it).
Surfaced during #3469 review (CodeRabbit flagged dhcp's log::warn! at crates/dhcp/src/lib.rs); deferred so it can be done crate-wide rather than piecemeal.
What
The
dhcpcrate is the codebase's lonelog::facade island: 47 of the workspace's 50log::macro calls live incrates/dhcp(the other 3 are incrates/rpc), while everything else usestracing::-- ~3,380 calls. So dhcp's logs don't carry structured fields into the fleet's logfmt pipeline the waytracing::logs do, and they may not even reach it.Investigate first
log::-- most likely because it's built arounddhcproto(its DHCP protocol dependency), which emits through thelogfacade, so dhcp matched it. Confirm.dhcp-server(the binary consumingcarbide-dhcp) installs alog->tracingbridge (LogTracer/tracing-log). If it does, dhcp'slog::records reach the fleet subscriber but as unstructured messages; if not, they may be dropped entirely -- a real observability gap.Then migrate
log::{warn,info,error,debug,trace}!sites (and rpc's 3) totracing::, passing values as structured fields (error = %e,%address, ...) instead of interpolating them.dhcproto's ownlog::output (keep a bridge for the dependency's logs, or leave it).Surfaced during #3469 review (CodeRabbit flagged dhcp's
log::warn!atcrates/dhcp/src/lib.rs); deferred so it can be done crate-wide rather than piecemeal.