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 Orual
parent 9e3ee7785c
commit c49c20e0a7
No known key found for this signature in database

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()