0.5.0-rc.2
Pre-releaseKey Changes
- Make the color API public
- Tweak the log format to be more aligned
Contributions
- @matthiasbeyer Dependencies: log: 0.4.0-rc.1 -> 0.4.0
- @KodrAus Public color API
- @rukai Fix spelling error
More Details
Disabling colors
Adds a new builder property for whether or not to include colors. By default this is RUST_LOG_STYLE, but it can be overridden.
Setting this environment variable to never will disable colors and other styles:
$ export RUST_LOG_STYLE=never
$ ./my-appValid values are:
auto(or missing/invalid) will decide whether or not the terminal supports colorsalwayswill always use colorsneverwill never use colors
In order to support multiple environment variables, I've refactored our from_env functions to accept a generic T: Into<Env>, where Env is a container for the environment variables we care about. These methods can now be called in a few ways:
// reads filters from `MY_LOG` and styles from `RUST_LOG_STYLE`
env_logger::init_from_env("MY_LOG");
// reads filters from `MY_LOG` and styles from `MY_LOG_STYLE`
env_logger::init_from_env(Env::default().filter("MY_LOG").write_style("MY_LOG_STYLE"));This lets us add new environment variables in the future without potentially breaking people. But it does mean if you're overriding all environment variables that new ones could slip in without you noticing.
Using alternative environment variables
Since we use two environment variables to configure the logger we need an ergonomic way to pass different combinations of those variables to from_env methods. This PR adds an Env type with builder methods for naming environment variables:
env_logger::init_from_env(Env::new().filter("MY_LOG"));With a few From conversions, the above is also equivalent to:
env_logger::init_from_env("MY_LOG");Whether or not we want to keep these conversions is up for discussion.
Writing colors
The color API has been refactored and made public so you can use them in your own formats:
let mut style = buf.style();
style.set_color(Color::Red).set_bold(true).set_bg(Color::White);
writeln!(buf, "{}", style.value(42))This saves you from having to split the writes into multiple calls and juggle Result types.
Writing timestamps
Oh the Formatter.timestamp method is now also public so you can grab timestamps.