#log-messages #logging #logger #log #color-scheme

print_logger

Logger that print messages to stdout or stderr

3 unstable releases

0.2.0 Feb 8, 2024
0.1.1 Jan 28, 2024
0.1.0 Jan 28, 2024

#469 in Debugging

38 downloads per month
Used in otr

GPL-3.0-or-later

28KB
147 lines

Crates.io (latest) Documentation REUSE status

print_logger

A simple logger that prints messages either to stdout or stderr (depending on the message type). A fixed color scheme is applied.

Simple example

use log::*;
use regex::Regex;

// ...

print_logger::new()
	.targets_by_regex(&[Regex::new(&format!("^{}[::.+]*", module_path!())).unwrap()])
	.level_filter(LevelFilter::Info)
	.init()
	.unwrap();

error!("some failure");

// ...

Module Level Logging

print_logger offers the possibility to restrict components which can log. Many crates use log but you may not want their output in your application. For example hyper makes heavy use of log but when your application receives -vvvvv to enable the trace!() messages you don't want the output of hyper's trace!() level.

To support this print_logger includes two methods:

  1. With targets_by_name a list of log targets (see https://docs.rs/log/latest/log/macro.error.html) can be specified. Only messages for these targets are displayed.

  2. With targets_by_regex a list of regular expressions can be specified. Messages are only displayed if their target matches at least one of these expressions. In the example above only messages from the binary itself but none of its dependencies are displayed (per default the current module is used as target in log messages).

If both lists are given, a message is displayed if its target either is in targets_by_name or if it matches one to the expressions of targets_by_regex. Target names (i.e., per default the actual module path) are displayed at the beginning of the log message if the print_target_filter is greater or equal than the specified level_filter.

License

GNU Public License v3.0

Dependencies

~3–11MB
~104K SLoC