mod serial_logger;
pub use serial_logger::Logger as SerialLogger;
pub enum Format {
Standard,
Json,
VerboseJson,
}
impl Format {
pub fn write<T: core::fmt::Write>(&self, target: &mut T, record: &log::Record) {
match self {
Format::Standard if record.level() == log::Level::Trace => {
writeln!(
target,
"TRACE - {}:{}: {}",
record.file().unwrap_or("unknown"),
record.line().unwrap_or(0),
record.args()
)
.expect("Printing to serial failed");
}
Format::Standard => {
writeln!(target, "{} - {}", record.level(), record.args()).expect("Printing to serial failed");
}
Format::Json => {
write!(
target,
"{}",
format_args!("{{\"level\": \"{}\" \"message\": \"{}\"}}\n", record.level(), record.args())
)
.expect("Printing to serial failed");
}
Format::VerboseJson => {
write!(
target,
"{}",
format_args!(
"{{\"level\": \"{}\", \"target\": \"{}\", \"message\": \"{}\", \"file\": \"{}\", \"line\": \"{}\"}}\n",
record.level(),
record.target(),
record.args(),
record.file().unwrap_or("unknown"),
record.line().unwrap_or(0)
)
)
.expect("Printing to serial failed");
}
}
}
}