direct_logger/direct_logger.rs
1/*!
2Using `env_logger::Logger` and the `log::Log` trait directly.
3
4This example doesn't rely on environment variables, or having a static logger installed.
5*/
6
7use env_logger::{Builder, WriteStyle};
8
9use log::{Level, LevelFilter, Log, MetadataBuilder, Record};
10
11#[cfg(feature = "kv")]
12static KVS: (&str, &str) = ("test", "something");
13
14fn record() -> Record<'static> {
15 let error_metadata = MetadataBuilder::new()
16 .target("myApp")
17 .level(Level::Error)
18 .build();
19
20 let mut builder = Record::builder();
21 builder
22 .metadata(error_metadata)
23 .args(format_args!("Error!"))
24 .line(Some(433))
25 .file(Some("app.rs"))
26 .module_path(Some("server"));
27 #[cfg(feature = "kv")]
28 {
29 builder.key_values(&KVS);
30 }
31 builder.build()
32}
33
34fn main() {
35 let stylish_logger = Builder::new()
36 .filter(None, LevelFilter::Error)
37 .write_style(WriteStyle::Always)
38 .build();
39
40 let unstylish_logger = Builder::new()
41 .filter(None, LevelFilter::Error)
42 .write_style(WriteStyle::Never)
43 .build();
44
45 stylish_logger.log(&record());
46 unstylish_logger.log(&record());
47}