5 releases

0.2.0 Feb 6, 2025
0.1.4 Feb 5, 2025
0.1.3 Jan 2, 2024
0.1.2 Aug 21, 2023

#208 in Debugging

Download history 4/week @ 2024-12-04 6/week @ 2024-12-11 285/week @ 2025-02-05

285 downloads per month

MIT license

24KB
567 lines

Hackerlog

A super simple but lightweight logging library that tries to capture the most important (status) information. The following is supported:

  • Log level with colors
  • Verbose mode:
    • Timestamp
    • PID
    • Thread name
    • Location
  • Output redirection to a log
  • Custom formatting
  • Structured logging
  • Log-level filtering
  • Custom contexts

Examples

The core functionality can be seen in the examples/ folder. You can run both of them via cargo run --example <name>:

Simple logger

``cargo run --example simple
   Compiling hackerlog v0.1.4 (/home/krah/git/priv/hackerlog)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.13s
     Running `target/debug/examples/simple`
[>] This is an info message
[>] This is an info message with a variable: 1337
[>] This is an info message with different syntactic sugar: 1337
[!] This is a warning message
[x] This is an error message
[+] This is a success message
[-] This is a failure message

Verbose logger

cargo run --example verbose
   Compiling hackerlog v0.1.0 (/Users/0x434b/Git/private/hackerlog)
    Finished dev [unoptimized + debuginfo] target(s) in 0.22s
     Running `target/debug/examples/verbose`
[>] (11:48:52) - [PID: 15435 | Thread: main] - (examples/verbose.rs:4) : This is an info message
[#] (11:48:52) - [PID: 15435 | Thread: main] - (examples/verbose.rs:5) : This is a debug message
[!] (11:48:52) - [PID: 15435 | Thread: main] - (examples/verbose.rs:6) : This is a warning message
[x] (11:48:52) - [PID: 15435 | Thread: main] - (examples/verbose.rs:7) : This is an error message
[+] (11:48:52) - [PID: 15435 | Thread: main] - (examples/verbose.rs:8) : This is a success message
[-] (11:48:52) - [PID: 15435 | Thread: main] - (examples/verbose.rs:9) : This is a failure message

Structured logger

Or for a more complex logging format:

 cargo run --example structured --features structured
   Compiling hackerlog v0.1.4 (/home/krah/git/priv/hackerlog)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.18s
     Running `target/debug/examples/structured`
2025-02-06 11:01:15 INFO User logged in [ip="192.168.1.1", success=true, user_id=1234]
2025-02-06 11:01:15 INFO User details [login_count=5, session_id="abc-123", user={"id":1234,"name":"alice","role":"admin"}]
2025-02-06 11:01:15 DEBUG Operation timing [duration_human="100.31ms", duration_ms=100, operation="database_query"]
2025-02-06 11:01:16 INFO Operation timing [duration_human="100.30ms", duration_ms=100, operation="api_request"]
2025-02-06 11:01:16 WARN Operation timing [duration_human="100.07ms", duration_ms=100, operation="critical_operation"]
2025-02-06 11:01:16 INFO Thread finished [status="complete", thread_id=1]
2025-02-06 11:01:16 INFO Operation timing [duration_human="100.46ms", duration_ms=100, operation="thread_operation_1"]
2025-02-06 11:01:16 INFO Thread finished [status="complete", thread_id=2]
2025-02-06 11:01:16 INFO Operation timing [duration_human="100.50ms", duration_ms=100, operation="thread_operation_2"]
2025-02-06 11:01:16 INFO Thread finished [status="complete", thread_id=0]
2025-02-06 11:01:16 INFO Operation timing [duration_human="100.59ms", duration_ms=100, operation="thread_operation_0"]

Usage

Run cargo add hackerlog in your project root and just import hackerlog in your application as use hackerlog::*; and you have access to the macros:

  • info!
  • debug!
  • warn!
  • err!
  • success!
  • fail!

Dependencies

~1–1.6MB
~28K SLoC