Skip to content

Commit 078795a

Browse files
committed
feat(rustup-init): (wip) use process().stderr() as a tracing output
1 parent c3490bc commit 078795a

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/bin/rustup-init.rs

+13-4
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ use rs_tracing::{
2020
close_trace_file, close_trace_file_internal, open_trace_file, trace_to_file_internal,
2121
};
2222

23-
use rustup::cli::common;
2423
use rustup::cli::proxy_mode;
2524
use rustup::cli::rustup_mode;
2625
#[cfg(windows)]
@@ -30,6 +29,7 @@ use rustup::currentprocess::{process, varsource::VarSource, with, OSProcess};
3029
use rustup::env_var::RUST_RECURSION_COUNT_MAX;
3130
use rustup::is_proxyable_tools;
3231
use rustup::utils::utils;
32+
use rustup::{cli::common, currentprocess::filesource::StderrSource};
3333

3434
fn main() {
3535
#[cfg(windows)]
@@ -61,13 +61,15 @@ fn maybe_trace_rustup() -> Result<utils::ExitCode> {
6161
trace::{self, Sampler},
6262
Resource,
6363
};
64-
use tracing_subscriber::{layer::SubscriberExt, EnvFilter, Registry};
64+
use tracing_subscriber::{fmt, layer::SubscriberExt, EnvFilter, Registry};
65+
66+
let curr_process = process();
6567

6668
// Background submission requires a runtime, and since we're probably
6769
// going to want async eventually, we just use tokio.
6870
let threaded_rt = tokio::runtime::Runtime::new()?;
6971

70-
let result = threaded_rt.block_on(async {
72+
let result = threaded_rt.block_on(async move {
7173
global::set_text_map_propagator(TraceContextPropagator::new());
7274
let tracer = opentelemetry_otlp::new_pipeline()
7375
.tracing()
@@ -87,7 +89,14 @@ fn maybe_trace_rustup() -> Result<utils::ExitCode> {
8789
.install_batch(opentelemetry_sdk::runtime::Tokio)?;
8890
let env_filter = EnvFilter::try_from_default_env().unwrap_or(EnvFilter::new("INFO"));
8991
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
90-
let subscriber = Registry::default().with(env_filter).with(telemetry);
92+
let subscriber = Registry::default()
93+
.with(
94+
fmt::layer()
95+
.with_ansi(curr_process.stderr().is_a_tty())
96+
.with_writer(move || curr_process.stderr()),
97+
)
98+
.with(env_filter)
99+
.with(telemetry);
91100
tracing::subscriber::set_global_default(subscriber)?;
92101
let result = run_rustup();
93102
// We're tracing, so block until all spans are exported.

0 commit comments

Comments
 (0)