errors: Maintain caller location in to_log
#1994
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
errors::LoggableError
trait provides theto_log
method as convenience function to log error messages easily. It is increasingly used throughout the zellij codebase, either directly or indirectly from thenon_fatal
function.Previously, the log messages generated by
to_log
would look something like this:The log output tells us that the error occured at
zellij-utils/src/errors.rs:130
, which is in fact wrong: This is only the location whereto_log
callslog::error!
to log the actual message content. It loses information about where the error originated.This PR changes the way the messages are logged, and provides log entries like the following instead:
Most notably, now the file and line number of the real caller are preserved. Unfortunately, this leaves the module empty ("???"), but this is unavoidable (and wasn't correct previously, either). That is because
log
by default resolves the module name with thestd::module_path!()
macro, which is replaced at compile time in the location it is written. In our case, this would still be theto_log
function. Hence, we leave the module empty.