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
)
)
Verbose logger
)
)
) )
) )
) )
) )
) )
) )
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!