1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
use crate::consts::{level_to_severity, Facility}; use crate::{Formattable, SyslogAppenderProtocol}; use log::Record; use log4rs::encode::writer::simple::SimpleWriter; use std::error::Error; #[derive(Debug)] pub struct Format {} impl Formattable for Format { fn format<'a>( &self, record: &Record<'a>, _protocol: &SyslogAppenderProtocol, encoder: &Box<dyn log4rs::encode::Encode>, ) -> Result<String, Box<dyn Error + Sync + Send>> { let mut buf: Vec<u8> = Vec::new(); encoder.encode(&mut SimpleWriter(&mut buf), record)?; let msg = std::str::from_utf8(&buf).unwrap(); let priority = Facility::USER as u8 | level_to_severity(record.level()); let msg = format!("<{}> {}\n", priority, msg); Ok(msg) } }