Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--Cargo.lock12
-rw-r--r--crates/hir_ty/Cargo.toml4
-rw-r--r--crates/rust-analyzer/Cargo.toml4
-rw-r--r--crates/rust-analyzer/src/bin/logger.rs25
4 files changed, 29 insertions, 16 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 3ad8244466..92f98b536c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -881,9 +881,9 @@ dependencies = [
[[package]]
name = "matchers"
-version = "0.0.1"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
dependencies = [
"regex-automata",
]
@@ -1731,9 +1731,9 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
-version = "0.2.25"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71"
+checksum = "245da694cc7fc4729f3f418b304cb57789f1bed2a78c575407ab8a23f53cb4d3"
dependencies = [
"lazy_static",
"matchers",
@@ -1747,9 +1747,9 @@ dependencies = [
[[package]]
name = "tracing-tree"
-version = "0.1.11"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2a408a91fbd4850982080e643a261aef2a2ef72c8263ce353b61d25acfc2c49"
+checksum = "3ce989c9962c7f61fe084dd4a230eec784649dfc2392467c790007c3a6e134e7"
dependencies = [
"ansi_term",
"atty",
diff --git a/crates/hir_ty/Cargo.toml b/crates/hir_ty/Cargo.toml
index 4ec8749f87..5c6525c0f4 100644
--- a/crates/hir_ty/Cargo.toml
+++ b/crates/hir_ty/Cargo.toml
@@ -36,8 +36,8 @@ limit = { path = "../limit", version = "0.0.0" }
test_utils = { path = "../test_utils" }
expect-test = "1.2.0-pre.1"
tracing = "0.1"
-tracing-subscriber = { version = "0.2", default-features = false, features = [
+tracing-subscriber = { version = "0.3", default-features = false, features = [
"env-filter",
"registry",
] }
-tracing-tree = { version = "0.1.10" }
+tracing-tree = "0.2"
diff --git a/crates/rust-analyzer/Cargo.toml b/crates/rust-analyzer/Cargo.toml
index 0863c40716..6d2f042ccb 100644
--- a/crates/rust-analyzer/Cargo.toml
+++ b/crates/rust-analyzer/Cargo.toml
@@ -34,14 +34,14 @@ rayon = "1.5"
mimalloc = { version = "0.1.19", default-features = false, optional = true }
lsp-server = "0.5.1"
tracing = "0.1"
-tracing-subscriber = { version = "0.2", default-features = false, features = [
+tracing-subscriber = { version = "0.3", default-features = false, features = [
"env-filter",
"registry",
"fmt",
"tracing-log",
] }
tracing-log = "0.1.2"
-tracing-tree = { version = "0.1.10" }
+tracing-tree = "0.2"
always-assert = "0.1"
stdx = { path = "../stdx", version = "0.0.0" }
diff --git a/crates/rust-analyzer/src/bin/logger.rs b/crates/rust-analyzer/src/bin/logger.rs
index 083ab69587..db00029da2 100644
--- a/crates/rust-analyzer/src/bin/logger.rs
+++ b/crates/rust-analyzer/src/bin/logger.rs
@@ -2,9 +2,9 @@
//! filter syntax and `tracing_appender` for non blocking output.
use std::{
- fmt::{self, Write},
+ fmt,
fs::File,
- io,
+ io::{self, Stderr},
sync::Arc,
};
@@ -12,7 +12,10 @@ use rust_analyzer::Result;
use tracing::{level_filters::LevelFilter, Event, Subscriber};
use tracing_log::NormalizeEvent;
use tracing_subscriber::{
- fmt::{writer::BoxMakeWriter, FmtContext, FormatEvent, FormatFields, FormattedFields},
+ fmt::{
+ format::Writer, writer::BoxMakeWriter, FmtContext, FormatEvent, FormatFields,
+ FormattedFields, MakeWriter,
+ },
layer::SubscriberExt,
registry::LookupSpan,
util::SubscriberInitExt,
@@ -25,6 +28,16 @@ pub(crate) struct Logger {
file: Option<File>,
}
+struct MakeWriterStderr;
+
+impl<'a> MakeWriter<'a> for MakeWriterStderr {
+ type Writer = Stderr;
+
+ fn make_writer(&'a self) -> Self::Writer {
+ io::stderr()
+ }
+}
+
impl Logger {
pub(crate) fn new(file: Option<File>, filter: Option<&str>) -> Logger {
let filter = filter.map_or(EnvFilter::default(), EnvFilter::new);
@@ -54,7 +67,7 @@ impl Logger {
.with_indent_lines(true)
.with_ansi(false)
.with_indent_amount(2)
- .with_writer(std::io::stderr);
+ .with_writer(io::stderr);
let writer = match self.file {
Some(file) => BoxMakeWriter::new(Arc::new(file)),
@@ -96,7 +109,7 @@ where
fn format_event(
&self,
ctx: &FmtContext<'_, S, N>,
- writer: &mut dyn Write,
+ mut writer: Writer,
event: &Event<'_>,
) -> fmt::Result {
// Write level and target
@@ -135,7 +148,7 @@ where
})?;
// Write fields on the event
- ctx.field_format().format_fields(writer, event)?;
+ ctx.field_format().format_fields(writer.by_ref(), event)?;
writeln!(writer)
}