Skip to content

rust.println_in_lib

Maintainability Medium

Detects println!/eprintln! in library code instead of proper logging.

Print statements in libs:

  • No log levels — Can’t filter output
  • No context — Missing timestamps, trace IDs
  • Pollutes stdout — Interferes with user output
// ❌ Before (raw print in library)
pub fn process(data: &[u8]) -> Result<()> {
println!("Processing {} bytes", data.len());
// ...
}
// ✅ After (use tracing or log)
use tracing::debug;
pub fn process(data: &[u8]) -> Result<()> {
debug!(bytes = data.len(), "Processing data");
// ...
}
  • println! in lib.rs or lib crates
  • eprintln! for error logging
  • dbg! left in production code

Unfault can convert to tracing macros (debug!, info!, warn!, error!).