mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 21:13:37 +00:00
fix: Handle missing time offsets gracefully
The tracing_subscribe docs state that missing offsets likely mean that we're in a multithreaded context: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/time/struct.OffsetTime.html#method.local_rfc_3339 We're not in a multithreaded context at this point, but some platforms (e.g. OpenBSD) still don't have time offsets available. Since this is only a rust-analyzer debugging convenience, just use system time logging in this situation. Fixes #18384
This commit is contained in:
parent
f9935be013
commit
2b676bfbd7
1 changed files with 14 additions and 6 deletions
|
@ -58,14 +58,22 @@ where
|
|||
let writer = self.writer;
|
||||
|
||||
let ra_fmt_layer = tracing_subscriber::fmt::layer()
|
||||
.with_timer(
|
||||
time::OffsetTime::local_rfc_3339()
|
||||
.expect("Could not get local offset, make sure you're on the main thread"),
|
||||
)
|
||||
.with_target(false)
|
||||
.with_ansi(false)
|
||||
.with_writer(writer)
|
||||
.with_filter(targets_filter);
|
||||
.with_writer(writer);
|
||||
|
||||
let ra_fmt_layer = match time::OffsetTime::local_rfc_3339() {
|
||||
Ok(timer) => {
|
||||
// If we can get the time offset, format logs with the timezone.
|
||||
ra_fmt_layer.with_timer(timer).boxed()
|
||||
}
|
||||
Err(_) => {
|
||||
// Use system time if we can't get the time offset. This should
|
||||
// never happen on Linux, but can happen on e.g. OpenBSD.
|
||||
ra_fmt_layer.boxed()
|
||||
}
|
||||
}
|
||||
.with_filter(targets_filter);
|
||||
|
||||
let chalk_layer = match self.chalk_filter {
|
||||
Some(chalk_filter) => {
|
||||
|
|
Loading…
Reference in a new issue