https://github.com/jonathanwoollett-light/log-instrument
https://github.com/jonathanwoollett-light/log-instrument
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/jonathanwoollett-light/log-instrument
- Owner: JonathanWoollett-Light
- Created: 2023-08-20T19:39:30.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-10-23T14:22:22.000Z (over 1 year ago)
- Last Synced: 2025-01-30T19:19:08.405Z (5 months ago)
- Language: Rust
- Size: 35.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# log-instrument
[](https://crates.io/crates/log-instrument)
[](https://docs.rs/log-instrument)
[](https://codecov.io/gh/JonathanWoollett-Light/log-instrument)Offers an attribute procedural macro that adds [`log::trace!`](https://docs.rs/log/latest/log/macro.trace.html) events at the start and end of attributed functions.
### Example
```rust
use log::*;fn main() {
env_logger::builder()
.filter_level(LevelFilter::Trace)
.init();
info!("{}", one(2));
info!("{}", one(3));
info!("{}", one(4));
}
#[log_instrument::instrument]
fn one(x: u32) -> u32 {
let cmp = x == 2;
debug!("cmp: {cmp}");
if cmp {
return 4;
}
two(x + 3)
}
#[log_instrument::instrument]
fn two(x: u32) -> u32 {
let res = x % 2;
debug!("res: {res}");
res
}
```Outputs:
```
[2023-10-12T16:38:00Z TRACE log_instrument] ThreadId(1)>>one
[2023-10-12T16:38:00Z DEBUG six] cmp: true
[2023-10-12T16:38:00Z TRACE log_instrument] ThreadId(1)<>one
[2023-10-12T16:38:00Z DEBUG six] cmp: false
[2023-10-12T16:38:00Z TRACE log_instrument] ThreadId(1)::one>>two
[2023-10-12T16:38:00Z DEBUG six] res: 0
[2023-10-12T16:38:00Z TRACE log_instrument] ThreadId(1)::one<>one
[2023-10-12T16:38:00Z DEBUG six] cmp: false
[2023-10-12T16:38:00Z TRACE log_instrument] ThreadId(1)::one>>two
[2023-10-12T16:38:00Z DEBUG six] res: 1
[2023-10-12T16:38:00Z TRACE log_instrument] ThreadId(1)::one<