kvlogger

Crates.iokvlogger
lib.rskvlogger
version0.5.0
sourcesrc
created_at2020-03-11 22:56:03.950987
updated_at2021-02-04 17:12:16.560086
descriptionA simple human readable key-value logger
homepage
repositoryhttps://github.com/apognu/kvlogger
max_upload_size
id217683
size44,221
Antoine POPINEAU (apognu)

documentation

README

Key-value logger for Rust

Banner

Usage

Like other loggers, kvlogger must be initialized and registered as the default log handler in your program. You can then use either that usual log macros (that do not handle key/value pairs), or use the kvlog! macro and add your data.

Any type that implements Display can be used as a value.

use std::error::Error;
use log::*;
use kvlogger::{KvLoggerBuilder, *};

fn main() -> Result<(), Box<dyn Error>> {
  KvLoggerBuilder::default()
    .set_level(Level::Debug)
    .set_datetime_format("%Y-%m-%d")
    .init()?;

  info!("a simple message");

  kvlog!(Info, "user tried to log in", {
    "username" => "apognu",
    "status" => 200
  });

  Ok(())
}

Configuration

kvlogger uses env_logger under the hood for filter selection. You have two ways to configure the desired level for your logs:

  • You can force the logger at a specific level with the set_level(mut self, log::Level) method of KvLoggerBuilder:
KvLoggerBuilder::default()
  .set_level(Level::Debug)
  .init()?;
  • Otherwise, you can use the RUST_LOG environment variable to specify which logs should be considered. See the env_logger documentation for more information.
$ RUST_LOG=rocket=error,main=info cargo run
  • If using the datetime feature (see below), you can specify another format from the default, with the set_datetime_format(mut self, Into<String>) method:
KvLoggerBuilder::default()
  .set_datetime_format("%Y-%m-%d")
  .init()?;

Optional features

By default, the date used is printed as the number of milliseconds since UNIX epoch. You can opt in the use of more complex (and human readable) formats by enabling the datetime feature in Cargo.toml:

[dependencies]
kvlogger = { version = "*", features = ["datetime"] }

Examples

$ cargo run --example simple
$ cargo run --example simple --features datetime
$ RUST_LOG=simple=trace cargo run --example simple --features datetime
Commit count: 16

cargo fmt