syslog_too/logger/
rfc3164.rs1use super::{Logger, LoggerBackend};
4use crate::Formatter3164;
5use log::{Level, Log, Metadata, Record};
6use std::io::Write;
7use std::sync::{Arc, Mutex};
8
9pub struct Logger3164 {
11 logger: Arc<Mutex<Logger<LoggerBackend, Formatter3164>>>,
13}
14
15impl Logger3164 {
16 pub fn new(logger: Logger<LoggerBackend, Formatter3164>) -> Self {
17 Self {
18 logger: Arc::new(Mutex::new(logger)),
19 }
20 }
21}
22
23#[allow(unused_variables, unused_must_use)]
24impl Log for Logger3164 {
25 fn enabled(&self, metadata: &Metadata) -> bool {
26 metadata.level() <= log::max_level() && metadata.level() <= log::STATIC_MAX_LEVEL
27 }
28
29 fn log(&self, record: &Record) {
30 if self.enabled(record.metadata()) {
31 let message = format!("{}", record.args());
33 let mut logger = self.logger.lock().unwrap();
34 match record.level() {
35 Level::Error => logger.err(message),
36 Level::Warn => logger.warning(message),
37 Level::Info => logger.info(message),
38 Level::Debug => logger.debug(message),
39 Level::Trace => logger.debug(message),
40 };
41 }
42 }
43
44 fn flush(&self) {
45 let _ = self.logger.lock().unwrap().backend.flush();
46 }
47}