this post was submitted on 11 Jan 2024
4 points (100.0% liked)
Rust
5744 readers
17 users here now
Welcome to the Rust community! This is a place to discuss about the Rust programming language.
Wormhole
Credits
- The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
If you're not familiar with the
tracing
crate, give theinstrument
page a read. You may find the#[instrument(err)]
part particularly useful.As for the errors themselves, if you're using
thiserror
(you should be), then the variants in your error enum would/should contain the relevant context data. And the chain of errors would be tracked viasource
/#[source]
fields, as explained in the crate docs. You can see such chains if you useanyhow
in your application code.I didn't know about
#[instrument(err)]
but in general I am well aware of the ways to log and return errors,I am more concerned with ways to prevent myself from accidentally forgetting to log some relevant information until the first time that error is logged somewhere where I need to debug the actual problem and then having to essentially create a new version just to add that logging (if I am lucky enough for the error to be reproducible at all).