Skip to content

Commit c3d9b21

Browse files
authored
[ty] Use better datetime format for server logs (#19083)
This PR improves the timer format for ty server logs to be same as Ruff. Ref: #16389
1 parent 316c1b2 commit c3d9b21

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

crates/ty_server/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ serde = { workspace = true }
3131
serde_json = { workspace = true }
3232
shellexpand = { workspace = true }
3333
tracing = { workspace = true }
34-
tracing-subscriber = { workspace = true }
34+
tracing-subscriber = { workspace = true, features = ["chrono"] }
3535

3636
[dev-dependencies]
3737

crates/ty_server/src/logging.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@
44
//! are written to `stderr` by default, which should appear in the logs for most LSP clients. A
55
//! `logFile` path can also be specified in the settings, and output will be directed there
66
//! instead.
7-
use core::str;
7+
use std::path::{Path, PathBuf};
8+
use std::str::FromStr;
9+
use std::sync::Arc;
10+
811
use serde::Deserialize;
9-
use std::{path::PathBuf, str::FromStr, sync::Arc};
1012
use tracing::level_filters::LevelFilter;
11-
use tracing_subscriber::{
12-
Layer,
13-
fmt::{time::Uptime, writer::BoxMakeWriter},
14-
layer::SubscriberExt,
15-
};
13+
use tracing_subscriber::Layer;
14+
use tracing_subscriber::fmt::time::ChronoLocal;
15+
use tracing_subscriber::fmt::writer::BoxMakeWriter;
16+
use tracing_subscriber::layer::SubscriberExt;
1617

17-
pub(crate) fn init_logging(log_level: LogLevel, log_file: Option<&std::path::Path>) {
18+
pub(crate) fn init_logging(log_level: LogLevel, log_file: Option<&Path>) {
1819
let log_file = log_file
1920
.map(|path| {
2021
// this expands `logFile` so that tildes and environment variables
@@ -49,10 +50,11 @@ pub(crate) fn init_logging(log_level: LogLevel, log_file: Option<&std::path::Pat
4950
Some(file) => BoxMakeWriter::new(Arc::new(file)),
5051
None => BoxMakeWriter::new(std::io::stderr),
5152
};
53+
let is_trace_level = log_level == LogLevel::Trace;
5254
let subscriber = tracing_subscriber::Registry::default().with(
5355
tracing_subscriber::fmt::layer()
54-
.with_timer(Uptime::default())
55-
.with_thread_names(true)
56+
.with_timer(ChronoLocal::new("%Y-%m-%d %H:%M:%S.%f".to_string()))
57+
.with_thread_names(is_trace_level)
5658
.with_ansi(false)
5759
.with_writer(logger)
5860
.with_filter(LogLevelFilter { filter: log_level }),
@@ -108,7 +110,7 @@ impl<S> tracing_subscriber::layer::Filter<S> for LogLevelFilter {
108110
meta.level() <= &filter
109111
}
110112

111-
fn max_level_hint(&self) -> Option<tracing::level_filters::LevelFilter> {
113+
fn max_level_hint(&self) -> Option<LevelFilter> {
112114
Some(LevelFilter::from_level(self.filter.trace_level()))
113115
}
114116
}

0 commit comments

Comments
 (0)