@@ -27,7 +27,9 @@ use rustup::cli::rustup_mode;
2727#[ cfg( windows) ]
2828use rustup:: cli:: self_update;
2929use rustup:: cli:: setup_mode;
30- use rustup:: currentprocess:: { process, varsource:: VarSource , with_runtime, OSProcess } ;
30+ use rustup:: currentprocess:: {
31+ filesource:: StderrSource , process, varsource:: VarSource , with_runtime, OSProcess ,
32+ } ;
3133use rustup:: env_var:: RUST_RECURSION_COUNT_MAX ;
3234use rustup:: is_proxyable_tools;
3335use rustup:: utils:: utils:: { self , ExitCode } ;
@@ -68,7 +70,9 @@ async fn maybe_trace_rustup() -> Result<utils::ExitCode> {
6870 trace:: { self , Sampler } ,
6971 Resource ,
7072 } ;
71- use tracing_subscriber:: { layer:: SubscriberExt , EnvFilter , Registry } ;
73+ use tracing_subscriber:: { fmt, layer:: SubscriberExt , EnvFilter , Registry } ;
74+
75+ let curr_process = process ( ) ;
7276
7377 global:: set_text_map_propagator ( TraceContextPropagator :: new ( ) ) ;
7478 let tracer = opentelemetry_otlp:: new_pipeline ( )
@@ -86,7 +90,14 @@ async fn maybe_trace_rustup() -> Result<utils::ExitCode> {
8690 . install_batch ( opentelemetry_sdk:: runtime:: Tokio ) ?;
8791 let env_filter = EnvFilter :: try_from_default_env ( ) . unwrap_or ( EnvFilter :: new ( "INFO" ) ) ;
8892 let telemetry = tracing_opentelemetry:: layer ( ) . with_tracer ( tracer) ;
89- let subscriber = Registry :: default ( ) . with ( env_filter) . with ( telemetry) ;
93+ let subscriber = Registry :: default ( )
94+ . with (
95+ fmt:: layer ( )
96+ . with_ansi ( curr_process. stderr ( ) . is_a_tty ( ) )
97+ . with_writer ( move || curr_process. stderr ( ) ) ,
98+ )
99+ . with ( env_filter)
100+ . with ( telemetry) ;
90101 tracing:: subscriber:: set_global_default ( subscriber) ?;
91102 let result = run_rustup ( ) . await ;
92103 // We're tracing, so block until all spans are exported.
0 commit comments