#logging-tracing #tracing #logging #log #api-bindings

test-pretty-log

A replacement of the #[test] attribute that initializes logging and/or tracing infrastructure before running tests

2 unstable releases

0.6.2 Jan 25, 2024
0.6.1 Jan 25, 2024
0.6.0 Jan 25, 2024
0.5.1 Jan 16, 2024
0.5.0 Jan 16, 2024

#257 in Testing

Apache-2.0 OR MIT

12KB
73 lines

test-pretty-log

Crates.io Version

test-pretty-log is a crate that takes care of automatically initializing logging and/or tracing for Rust tests.

It is based off test-log and enables the logs to use pretty colors! :3

Note that this crate has removed support for log and focuses entirely on tracing. Re-introducing support for log is planned at a later date.

Usage

The crate provides a custom #[test] attribute that, when used for running a particular test, takes care of initializing tracing beforehand.

Example

As such, usage is as simple as importing and using said attribute:

use test_pretty_log::test;

#[test]
fn it_works() {
  info!("Checking whether it still works...");
  assert_eq!(2 + 2, 4);
  info!("Looks good!");
}

It is of course also possible to initialize logging for a chosen set of tests, by only annotating these with the custom attribute:

#[test_pretty_log::test]
fn it_still_works() {
  // ...
}

You can also stack another attribute. For example, suppose you use [#[tokio::test]][tokio-test] to run async tests:

use test_log::test;

#[test(tokio::test)]
async fn it_still_works() {
  // ...
}

Lastly, you can disable coloring for a test with a parameter:

use test_log::test;

#[test(color=false)]
fn no_more_colored_output() {
  // :blobfoxsad:
}

Logging Configuration

As usual when running cargo test, the output is captured by the framework by default and only shown on test failure. The --nocapture argument can be supplied in order to overwrite this setting. E.g.,

$ cargo test -- --nocapture

Furthermore, the RUST_LOG environment variable is honored and can be used to influence the log level to work with (among other things). Please refer to the [env_logger docs][env-docs-rs] for more information.

The RUST_LOG_SPAN_EVENTS environment variable can be used to configure the tracing subscriber to log synthesized events at points in the span lifecycle. Set the variable to a comma-separated list of events you want to see. For example, RUST_LOG_SPAN_EVENTS=full or RUST_LOG_SPAN_EVENTS=new,close.

Valid events are new, enter, exit, close, active, and full. See the [tracing_subscriber docs][tracing-events-docs-rs] for details on what the events mean.

The RUST_LOG_COLOR environment variable can be used to configure outputting ANSI colors in the tracing subscriber to print colorized logs. By default, this is enabled. Valid values are common boolean representations (f, false, off, 0, t, true, on, 1). The color parameter of the macro overrides this setting.

The RUST_LOG_FORMAT environment variable can be used to configure the formatter of the tracing subcriber. By default, it is set to pretty. Valid values are pretty, full, or compact.

Dependencies

~4–6.5MB
~105K SLoC