1
2pub trait Format: Send + Sync + Sized {
4 fn format(&self,
6 io: &mut io::Write,
7 info: &Record,
8 logger_values: &OwnedKeyValueList)
9 -> io::Result<()>;
10}
11
12pub trait Decorator: Send + Sync + Sized {
18 type RecordDecorator: RecordDecorator;
20
21 fn decorate(&self, record: &Record) -> Self::RecordDecorator;
23}
24
25pub trait RecordDecorator {
29 fn fmt_msg(&self, io: &mut io::Write, f: &Fn(&mut io::Write) -> io::Result<()>) -> io::Result<()> {
31 f(io)
32 }
33 fn fmt_key(&self, io: &mut io::Write, f: &Fn(&mut io::Write) -> io::Result<()>) -> io::Result<()> {
35 f(io)
36 }
37 fn fmt_separator(&self, io: &mut io::Write, f: &Fn(&mut io::Write) -> io::Result<()>) -> io::Result<()> {
39 f(io)
40 }
41 fn fmt_value(&self, io: &mut io::Write, f: &Fn(&mut io::Write) -> io::Result<()>) -> io::Result<()> {
43 f(io)
44 }
45 fn fmt_timestamp(&self, io: &mut io::Write, f : &Fn(&mut io::Write) -> io::Result<()>) -> io::Result<()> {
47 f(io)
48 }
49 fn fmt_level(&self, io: &mut io::Write, f: &Fn(&mut io::Write) -> io::Result<()>) -> io::Result<()> {
51 f(io)
52 }
53}