Skip to main content

custom_writer/
custom_writer.rs

1// Example showing deduplication with a custom writer (file output)
2use std::fs::File;
3use std::io;
4use tracing_subscriber::fmt;
5use tracing_dedup::DeduplicatingFormatter;
6
7fn main() -> io::Result<()> {
8  // Create a file to write logs to
9  let log_file = File::create("output.log")?;
10
11  tracing_subscriber::fmt()
12    .event_format(DeduplicatingFormatter::new(fmt::format::Format::default()))
13    .with_writer(move || log_file.try_clone().unwrap())
14    .init();
15
16  // Test it
17  tracing::info!("Starting application");
18  tracing::info!("Processing item");
19  tracing::info!("Processing item");
20  tracing::info!("Processing item");
21  tracing::info!("Processing item");
22  tracing::warn!("Network timeout");
23  tracing::warn!("Network timeout");
24  tracing::info!("Application finished");
25
26  println!("Logs written to output.log - check the file to see deduplicated output!");
27
28  Ok(())
29}