util: Fix crate name extraction for log_error_with_caller (#35944)

The paths can be absolute, meaning they would just log the initial
segment of where the repo was cloned.

Release Notes:

- N/A
This commit is contained in:
Lukas Wirth 2025-08-10 17:19:06 +02:00 committed by GitHub
parent 8382afb2ba
commit 9cd5c3656e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -669,9 +669,12 @@ where
let file = caller.file();
#[cfg(target_os = "windows")]
let file = caller.file().replace('\\', "/");
// In this codebase, the first segment of the file path is
// the 'crates' folder, followed by the crate name.
let target = file.split('/').nth(1);
// In this codebase all crates reside in a `crates` directory,
// so discard the prefix up to that segment to find the crate name
let target = file
.split_once("crates/")
.and_then(|(_, s)| s.split_once('/'))
.map(|(p, _)| p);
log::logger().log(
&log::Record::builder()