@@ -412,17 +412,61 @@ impl Builder {
412412 E : Into < Env < ' a > > ,
413413 {
414414 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+ {
415459 let env = env. into ( ) ;
416460
417461 if let Some ( s) = env. get_filter ( ) {
418- builder . parse_filters ( & s) ;
462+ self . parse_filters ( & s) ;
419463 }
420464
421465 if let Some ( s) = env. get_write_style ( ) {
422- builder . parse_write_style ( & s) ;
466+ self . parse_write_style ( & s) ;
423467 }
424468
425- builder
469+ self
426470 }
427471
428472 /// Initializes the log builder from the environment using default variable names.
@@ -447,6 +491,32 @@ impl Builder {
447491 Self :: from_env ( Env :: default ( ) )
448492 }
449493
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+
450520 /// Sets the format function for formatting the log output.
451521 ///
452522 /// This function is called on each record logged and should format the
0 commit comments