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}