A logger that prints all messages with a readable output format.
The output format is based on the format used by Supervisord, with timestamps default RFC 3339 format. The format used for timestamps can be customised.
- Version 2.0.0 changes the default from displaying timestamps in the local timezone to displaying timestamps in UTC. See issue #52 for more information.
use simple_logger::SimpleLogger;
fn main() {
SimpleLogger::new().init().unwrap();
log::warn!("This is an example message.");
}
This outputs:
2022-01-19T17:27:07.013874956Z WARN [logging_example] This is an example message.
You can run the above example with:
cargo run --example init
The colors
and timestamps
features are enabled by default. You can remove these
features and their respective dependencies by disabling all features in your
Cargo.toml
.
[dependencies.simple_logger]
default-features = false
To include the timestamps
feature, but not the colors
feature:
[dependencies.simple_logger]
default-features = false
features = ["timestamps"]
To include the colors
feature, but not the timestamps
feature:
[dependencies.simple_logger]
default-features = false
features = ["colors"]
To include thread metadata use the threads
and nightly
features:
[dependencies.simple_logger]
features = ["threads", "nightly"]
To direct logging output to stderr
use the stderr
feature:
[dependencies.simple_logger]
features = ["stderr"]
Multiple features can be combined.
[dependencies.simple_logger]
features = ["colors", "threads", "timestamps", "nightly", "stderr"]
Users that might want to wrap this logger to be able to catch log events for various reasons can setup the logger as follows:
On windows machines:
let logger = SimpleLogger::new();
set_up_color_terminal();
let max_level = logger.max_level();
Otherwise:
let logger = SimpleLogger::new();
let max_level = logger.max_level();
The user can then themselves call log::set_max_level
and log::set_boxed_logger
or equivalent as they wish.
simple_logger
is licenced under the MIT Licence.
Written by Sam Clements.