Explain (Part 2)
Now the next part of the code:
#[logger]
fn do_something() {
entering!();
// do some work worth noting
let result = "Just something to log.";
info!("Did some work here.\n {result}");
// ...
fine!("Bit more detail.");
if let Err(e) = error_prone() {
warning!("Error: {}", e);
}
exiting!();
}
Firstly, the attribute macro: logger
.
The API says:
Provides for logging within the attributed function/method.
This is required to be able to use the macros. It sets up the local variable used by
the other macros, and it also registers the function/method name used by the log
entries (if included in the formatter’s 'fmt_string').
This is what handles all of the repetitive coding needed for each of the logged functions/methods.