Skip to content

chensoft/logkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logkit

Super fast, structured, scalable logging library for Rust

Crates.io MIT licensed Documentation Build Status Build Status Build Status

Hello World

#[macro_use] extern crate logkit;

fn main() {
    let mut logger = logkit::Logger::new(Some(&logkit::StdoutTarget));
    logger.mount(logkit::LevelPlugin);
    logger.mount(logkit::TimePlugin::from_millis());
    logkit::set_default_logger(logger);

    trace!("hello, this is a trace log");
    debug!("hello, this is a debug log");
    info!(version = "0.1.0", commit = "3291cc60"; "this is a log with two string fields");
    warn!(address = "127.0.0.1", port = 3000; "this is a log with a string and a numeric field");
    error!("this is a log with a 'println' style string {}:{}", "127.0.0.1", 3000.0);
}

Output sample:

{"level":"trace","time":"2024-01-26T20:33:01.841+08:00","msg":"hello, this is a trace log"}
{"level":"debug","time":"2024-01-26T20:33:01.841+08:00","msg":"hello, this is a debug log"}
{"level":"info","time":"2024-01-26T20:33:01.841+08:00","msg":"this is a log with two string fields","version":"0.1.0","commit":"3291cc60"}
{"level":"warn","time":"2024-01-26T20:33:01.841+08:00","msg":"this is a log with a string and a numeric field","address":"127.0.0.1","port":3000}
{"level":"error","time":"2024-01-26T20:33:01.841+08:00","msg":"this is a log with a 'println' style string 127.0.0.1:3000"}

Benchmark

  • MacBook Air, Apple M2 24G, Sonoma 14.2.1
Name Time
empty_log [22.526 ns 22.541 ns 22.560 ns]
level_off [1.6941 ns 1.6989 ns 1.7050 ns]
msg_only [63.166 ns 63.172 ns 63.177 ns]
msg_format [63.238 ns 63.373 ns 63.548 ns]
fields_only [96.944 ns 96.974 ns 97.005 ns]
fields_msg [147.03 ns 147.26 ns 147.56 ns]
fields_msg_format [146.44 ns 146.51 ns 146.58 ns]
fields_ten_fields [395.31 ns 395.35 ns 395.40 ns]
  • AWS c5.2xlarge, 8C 16G, Ubuntu 22.04
Name Time
empty_log [50.761 ns 50.764 ns 50.768 ns]
level_off [4.1800 ns 4.1804 ns 4.1810 ns]
msg_only [121.12 ns 121.14 ns 121.16 ns]
msg_format [121.18 ns 121.20 ns 121.23 ns]
fields_only [177.70 ns 177.74 ns 177.77 ns]
fields_msg [264.25 ns 264.33 ns 264.45 ns]
fields_msg_format [261.80 ns 261.89 ns 261.98 ns]
fields_ten_fields [654.11 ns 654.31 ns 654.51 ns]

Documentation

The documentation is available here.

License

This software is released under the MIT License.

About

Super fast, structured, scalable logging library for Rust

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages