Skip to content

Commit 0ef5cff

Browse files
authored
Merge pull request #168 from KodrAus/chore/build-fn-cleanup
Deprecate env_logger::from_env and clean up examples
2 parents 95465b2 + b24920e commit 0ef5cff

7 files changed

+93
-26
lines changed

examples/custom_default_format.rs

+4-5
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,10 @@ fn init_logger() {
2727
.filter("MY_LOG_LEVEL")
2828
.write_style("MY_LOG_STYLE");
2929

30-
let mut builder = Builder::from_env(env);
31-
32-
builder.format_level(false).format_timestamp_nanos();
33-
34-
builder.init();
30+
Builder::from_env(env)
31+
.format_level(false)
32+
.format_timestamp_nanos()
33+
.init();
3534
}
3635

3736
fn main() {

examples/custom_format.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ If you want to control the logging output completely, see the `custom_logger` ex
1919

2020
#[cfg(all(feature = "termcolor", feature = "humantime"))]
2121
fn main() {
22-
use env_logger::{fmt, Builder, Env};
22+
use env_logger::{fmt::Color, Builder, Env};
23+
2324
use std::io::Write;
2425

2526
fn init_logger() {
@@ -30,7 +31,7 @@ fn main() {
3031
Builder::from_env(env)
3132
.format(|buf, record| {
3233
let mut style = buf.style();
33-
style.set_bg(fmt::Color::Yellow).set_bold(true);
34+
style.set_bg(Color::Yellow).set_bold(true);
3435

3536
let timestamp = buf.timestamp();
3637

examples/custom_logger.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,19 @@ If you only want to change the way logs are formatted, look at the `custom_forma
1313
#[macro_use]
1414
extern crate log;
1515

16-
use env_logger::filter::Filter;
16+
use env_logger::filter::{Builder, Filter};
17+
1718
use log::{Log, Metadata, Record, SetLoggerError};
1819

20+
const FILTER_ENV: &'static str = "MY_LOG_LEVEL";
21+
1922
struct MyLogger {
2023
inner: Filter,
2124
}
2225

2326
impl MyLogger {
2427
fn new() -> MyLogger {
25-
use env_logger::filter::Builder;
26-
let mut builder = Builder::from_env("MY_LOG_LEVEL");
28+
let mut builder = Builder::from_env(FILTER_ENV);
2729

2830
MyLogger {
2931
inner: builder.build(),

examples/direct_logger.rs

+14-12
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@ Using `env_logger::Logger` and the `log::Log` trait directly.
44
This example doesn't rely on environment variables, or having a static logger installed.
55
*/
66

7-
fn record() -> log::Record<'static> {
8-
let error_metadata = log::MetadataBuilder::new()
7+
use env_logger::{Builder, WriteStyle};
8+
9+
use log::{Level, LevelFilter, Log, MetadataBuilder, Record};
10+
11+
fn record() -> Record<'static> {
12+
let error_metadata = MetadataBuilder::new()
913
.target("myApp")
10-
.level(log::Level::Error)
14+
.level(Level::Error)
1115
.build();
1216

13-
log::Record::builder()
17+
Record::builder()
1418
.metadata(error_metadata)
1519
.args(format_args!("Error!"))
1620
.line(Some(433))
@@ -20,16 +24,14 @@ fn record() -> log::Record<'static> {
2024
}
2125

2226
fn main() {
23-
use log::Log;
24-
25-
let stylish_logger = env_logger::Builder::new()
26-
.filter(None, log::LevelFilter::Error)
27-
.write_style(env_logger::WriteStyle::Always)
27+
let stylish_logger = Builder::new()
28+
.filter(None, LevelFilter::Error)
29+
.write_style(WriteStyle::Always)
2830
.build();
2931

30-
let unstylish_logger = env_logger::Builder::new()
31-
.filter(None, log::LevelFilter::Error)
32-
.write_style(env_logger::WriteStyle::Never)
32+
let unstylish_logger = Builder::new()
33+
.filter(None, LevelFilter::Error)
34+
.write_style(WriteStyle::Never)
3335
.build();
3436

3537
stylish_logger.log(&record());

examples/filters_from_code.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ Specify logging filters in code instead of using an environment variable.
55
#[macro_use]
66
extern crate log;
77

8+
use env_logger::Builder;
9+
10+
use log::LevelFilter;
11+
812
fn main() {
9-
env_logger::builder()
10-
.filter_level(log::LevelFilter::Trace)
11-
.init();
13+
Builder::new().filter_level(LevelFilter::max()).init();
1214

1315
trace!("some trace log");
1416
debug!("some debug log");

examples/in_tests.rs

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*!
2+
Using `env_logger` in tests.
3+
4+
Log events will be captured by `cargo` and only printed if the test fails.
5+
You can run this example by calling:
6+
7+
```text
8+
cargo test --example in_tests
9+
```
10+
11+
You should see the `it_does_not_work` test fail and include its log output.
12+
*/
13+
14+
#[cfg_attr(test, macro_use)]
15+
extern crate log;
16+
17+
fn main() {}
18+
19+
#[cfg(test)]
20+
mod tests {
21+
fn init_logger() {
22+
let _ = env_logger::builder()
23+
// Include all events in tests
24+
.filter_level(log::LevelFilter::max())
25+
// Ensure events are captured by `cargo test`
26+
.is_test(true)
27+
// Ignore errors initializing the logger if tests race to configure it
28+
.try_init();
29+
}
30+
31+
#[test]
32+
fn it_works() {
33+
init_logger();
34+
35+
let a = 1;
36+
let b = 2;
37+
38+
debug!("checking whether {} + {} = 3", a, b);
39+
40+
assert_eq!(3, a + b);
41+
}
42+
43+
#[test]
44+
fn it_does_not_work() {
45+
init_logger();
46+
47+
let a = 1;
48+
let b = 2;
49+
50+
debug!("checking whether {} + {} = 6", a, b);
51+
52+
assert_eq!(6, a + b);
53+
}
54+
}

src/lib.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@
225225
//! ```
226226
//! use env_logger::Env;
227227
//!
228-
//! env_logger::from_env(Env::default().default_filter_or("warn")).init();
228+
//! env_logger::Builder::from_env(Env::default().default_filter_or("warn")).init();
229229
//! ```
230230
//!
231231
//! [log-crate-url]: https://docs.rs/log/
@@ -1185,13 +1185,20 @@ where
11851185
/// Create a new builder with the default environment variables.
11861186
///
11871187
/// The builder can be configured before being initialized.
1188+
/// This is a convenient way of calling [`Builder::from_default_env`].
1189+
///
1190+
/// [`Builder::from_default_env`]: struct.Builder.html#method.from_default_env
11881191
pub fn builder() -> Builder {
11891192
Builder::from_default_env()
11901193
}
11911194

11921195
/// Create a builder from the given environment variables.
11931196
///
11941197
/// The builder can be configured before being initialized.
1198+
#[deprecated(
1199+
since = "0.7.2",
1200+
note = "Prefer `env_logger::Builder::from_env()` instead."
1201+
)]
11951202
pub fn from_env<'a, E>(env: E) -> Builder
11961203
where
11971204
E: Into<Env<'a>>,

0 commit comments

Comments
 (0)