1use std::io::Write;
4
5pub mod backend;
6pub mod rfc3164;
7pub mod rfc5424;
8
9use crate::errors::Result;
10use crate::format::LogFormat;
11
12pub use self::backend::LoggerBackend;
13pub use self::rfc3164::Logger3164;
14pub use self::rfc5424::Logger5424;
15
16pub struct Logger<Backend: Write, Formatter> {
18 pub formatter: Formatter,
19 pub backend: Backend,
20}
21
22impl<W: Write, F> Logger<W, F> {
23 pub fn new(backend: W, formatter: F) -> Self {
24 Logger { backend, formatter }
25 }
26
27 pub fn emerg<T>(&mut self, message: T) -> Result<()>
28 where
29 F: LogFormat<T>,
30 {
31 self.formatter.emerg(&mut self.backend, message)
32 }
33
34 pub fn alert<T>(&mut self, message: T) -> Result<()>
35 where
36 F: LogFormat<T>,
37 {
38 self.formatter.alert(&mut self.backend, message)
39 }
40
41 pub fn crit<T>(&mut self, message: T) -> Result<()>
42 where
43 F: LogFormat<T>,
44 {
45 self.formatter.crit(&mut self.backend, message)
46 }
47
48 pub fn err<T>(&mut self, message: T) -> Result<()>
49 where
50 F: LogFormat<T>,
51 {
52 self.formatter.err(&mut self.backend, message)
53 }
54
55 pub fn warning<T>(&mut self, message: T) -> Result<()>
56 where
57 F: LogFormat<T>,
58 {
59 self.formatter.warning(&mut self.backend, message)
60 }
61
62 pub fn notice<T>(&mut self, message: T) -> Result<()>
63 where
64 F: LogFormat<T>,
65 {
66 self.formatter.notice(&mut self.backend, message)
67 }
68
69 pub fn info<T>(&mut self, message: T) -> Result<()>
70 where
71 F: LogFormat<T>,
72 {
73 self.formatter.info(&mut self.backend, message)
74 }
75
76 pub fn debug<T>(&mut self, message: T) -> Result<()>
77 where
78 F: LogFormat<T>,
79 {
80 self.formatter.debug(&mut self.backend, message)
81 }
82}