Crates.io | structured-logger |
lib.rs | structured-logger |
version | 1.0.3 |
source | src |
created_at | 2023-03-24 09:51:12.423891 |
updated_at | 2023-08-13 08:18:22.357858 |
description | A logging implementation for the log crate that logs structured values either synchronous or asynchronous, as JSON, CBOR, or any other format, into a file, stderr, stdout, or any other destination. |
homepage | |
repository | https://github.com/iorust/structured-logger |
max_upload_size | |
id | 819146 |
size | 54,697 |
A logging implementation for the log crate that logs structured values either synchronous or asynchronous, in JSON, CBOR, or any other format, to a file, stderr, stdout, or any other destination.
It is inspired by std-logger.
See examples and the API documentation for more.
Simple example:
use serde::Serialize;
use structured_logger::{async_json::new_writer, unix_ms, Builder};
#[tokio::main]
async fn main() {
// Initialize the logger.
Builder::with_level("info")
.with_target_writer("*", new_writer(tokio::io::stdout()))
.init();
let kv = ContextLog {
uid: "user123".to_string(),
action: "upate_book".to_string(),
};
log::info!("hello world");
// This log will be written to stdout:
// {"level":"INFO","message":"hello world","target":"simple","timestamp":1679745592127}
log::info!(target: "api",
method = "GET",
path = "/hello",
status = 200_u16,
start = unix_ms(),
elapsed = 10_u64,
kv = log::as_serde!(kv);
"",
);
// This log will be written to stdout:
// {"elapsed":10,"kv":{"uid":"user123","action":"upate_book"},"level":"INFO","message":"","method":"GET","path":"/hello","start":1679745592127,"status":200,"target":"api","timestamp":1679745592127}
}
#[derive(Serialize)]
struct ContextLog {
uid: String,
action: String,
}
Copyright © 2023-present IO Rust.
iorust/structured-logger
is licensed under either of Apache License, Version
2.0 or MIT license at your option.