use std::io::{self, Write};
use arrayvec::ArrayVec;
use syslog_fmt::{
Severity,
v5424::{self, Timestamp},
};
fn main() -> io::Result<()> {
let formatter = v5424::Config {
app_name: Some("fine_grained_write_control_example"),
..Default::default()
}
.into_formatter();
let mut buf = ArrayVec::<u8, 1024>::new();
formatter.write_header(&mut buf, Severity::Info, Timestamp::CreateChronoLocal, None)?;
let module = "app::connection";
let lineno = "101";
v5424::write_data(
&mut buf,
[("location", [("module", module), ("lineno", lineno)])],
)?;
v5424::write_utf8_bom(&mut buf)?;
let command = "su root";
let device = "/dev/pts/8";
write!(&mut buf, "'{command}' failed for lonvick on {device}").unwrap();
println!(
"{}",
std::str::from_utf8(&buf).expect("message isn't valid UTF8")
);
Ok(())
}