@@ -412,17 +412,61 @@ impl Builder {
412
412
E : Into < Env < ' a > > ,
413
413
{
414
414
let mut builder = Builder :: new ( ) ;
415
+ builder. parse_env ( env) ;
416
+ builder
417
+ }
418
+
419
+ /// Applies the configuration from the environment.
420
+ ///
421
+ /// This function allows a builder to be configured with default parameters,
422
+ /// to be then overridden by the environment.
423
+ ///
424
+ /// # Examples
425
+ ///
426
+ /// Initialise a logger with filter level `Off`, then override the log
427
+ /// filter from an environment variable called `MY_LOG`:
428
+ ///
429
+ /// ```
430
+ /// use log::LevelFilter;
431
+ /// use env_logger::Builder;
432
+ ///
433
+ /// let mut builder = Builder::new();
434
+ ///
435
+ /// builder.filter_level(LevelFilter::Off);
436
+ /// builder.parse_env("MY_LOG");
437
+ /// builder.init();
438
+ /// ```
439
+ ///
440
+ /// Initialise a logger with filter level `Off`, then use the `MY_LOG`
441
+ /// variable to override filtering and `MY_LOG_STYLE` to override whether
442
+ /// or not to write styles:
443
+ ///
444
+ /// ```
445
+ /// use log::LevelFilter;
446
+ /// use env_logger::{Builder, Env};
447
+ ///
448
+ /// let env = Env::new().filter("MY_LOG").write_style("MY_LOG_STYLE");
449
+ ///
450
+ /// let mut builder = Builder::new();
451
+ /// builder.filter_level(LevelFilter::Off);
452
+ /// builder.parse_env(env);
453
+ /// builder.init();
454
+ /// ```
455
+ pub fn parse_env < ' a , E > ( & mut self , env : E ) -> & mut Self
456
+ where
457
+ E : Into < Env < ' a > > ,
458
+ {
415
459
let env = env. into ( ) ;
416
460
417
461
if let Some ( s) = env. get_filter ( ) {
418
- builder . parse_filters ( & s) ;
462
+ self . parse_filters ( & s) ;
419
463
}
420
464
421
465
if let Some ( s) = env. get_write_style ( ) {
422
- builder . parse_write_style ( & s) ;
466
+ self . parse_write_style ( & s) ;
423
467
}
424
468
425
- builder
469
+ self
426
470
}
427
471
428
472
/// Initializes the log builder from the environment using default variable names.
@@ -447,6 +491,32 @@ impl Builder {
447
491
Self :: from_env ( Env :: default ( ) )
448
492
}
449
493
494
+ /// Applies the configuration from the environment using default variable names.
495
+ ///
496
+ /// This method is a convenient way to call `parse_env(Env::default())` without
497
+ /// having to use the `Env` type explicitly. The builder will use the
498
+ /// [default environment variables].
499
+ ///
500
+ /// # Examples
501
+ ///
502
+ /// Initialise a logger with filter level `Off`, then configure it using the
503
+ /// default environment variables:
504
+ ///
505
+ /// ```
506
+ /// use log::LevelFilter;
507
+ /// use env_logger::Builder;
508
+ ///
509
+ /// let mut builder = Builder::new();
510
+ /// builder.filter_level(LevelFilter::Off);
511
+ /// builder.parse_default_env();
512
+ /// builder.init();
513
+ /// ```
514
+ ///
515
+ /// [default environment variables]: struct.Env.html#default-environment-variables
516
+ pub fn parse_default_env ( & mut self ) -> & mut Self {
517
+ self . parse_env ( Env :: default ( ) )
518
+ }
519
+
450
520
/// Sets the format function for formatting the log output.
451
521
///
452
522
/// This function is called on each record logged and should format the
0 commit comments