#log #logger #logging

loge

A analysis friendly logger with formatted output

12 unstable releases (3 breaking)

0.4.2 Jun 8, 2020
0.4.1 Feb 4, 2020
0.3.1 Jan 29, 2020
0.2.3 Jan 22, 2020
0.1.2 Jan 16, 2020

#72 in Debugging

Download history 168/week @ 2020-04-13 114/week @ 2020-04-20 125/week @ 2020-04-27 60/week @ 2020-05-04 107/week @ 2020-05-11 131/week @ 2020-05-18 118/week @ 2020-05-25 101/week @ 2020-06-01 112/week @ 2020-06-08 87/week @ 2020-06-15 106/week @ 2020-06-22 83/week @ 2020-06-29 64/week @ 2020-07-06 102/week @ 2020-07-13 76/week @ 2020-07-20 69/week @ 2020-07-27

499 downloads per month

MIT/Apache

27KB
499 lines

loge

Crates.io Docs MIT/APACHE-2.0 GitHub Workflow Status

It helps to be diligent in recording and willing to review.

A simple logger with formatted output for easy analysis. Free your productivity start with best practices logs.

loge is currently controlled by features and environment variables:

  • If you need to record time, enable chrono;
  • When you enable json, you also need to enable chrono;
  • For pretty output, enable colored.
  • By default, we turn on all three features.
  • You can choose one of three formats: target, fileline or json. (Set environment variable LOGE_FORMAT.)

Examples:

  • target: date time [level] target ... message(enable chrono) or level target ... message:

    loge output

  • fileline: date time [level] file - target (line) ... message(enable chrono) or level file - target (line) ... message:

    loge fileline output

  • json: You should enable json and chrono; for pretty output, enable colored.

    {
      "time": "2020-02-02 18:33:33.645",
      "level": "ERROR",
      "message": "boom -> tests/simple-jsonified-log.rs:17",
      "service": {
        "name": "loge",
        "version": "0.4.1"
      },
      "location": {
        "file": "tests/simple-jsonified-log.rs",
        "line": 17,
        "target": "simple_jsonified_log::tests"
      }
    }
    
  • file: If you want to print log to a file, enable it, and you will see output both in terminal and file.

TODO

  • Format
    • Simple JSON Logger. // Unoptimized.
    • Colorful, Intuitive.
  • Analysis
    • Basic Parser.
    • Coarse-grained Chart.
  • Others
    • Lightweight - As few dependencies as possible.
    • Clear architecture and flexible configuration.
    • Asynchronous.
    • Output to file.

Usage

At first, you should add it to your Cargo.toml file.

[dependencies]
log = "0.4.8"
loge = "0.4.2"

After that, set the RUST_LOG & LOGE_FORMAT variable in your code and initialize the logger.

std::env::set_var("RUST_LOG", "trace");
std::env::set_var("LOGE_FORMAT", "target"); // `fileline` or `json`(need enable `json` and `chrono`)
loge::init(); // If you enable `file`, you can't use this func.
// Or `loge::init_with_file("your-app.log");`, but need enable `file`, and will see output both in terminal and file. 

Just run your project, you will get logs in the terminal.

Contact

Chojan Shang - @PsiACE - psiace@outlook.com

Project Link: https://github.com/psiace/loge

License

Licensed under either of:

Acknowledge

Dependencies

~0.8–1.2MB
~21K SLoC