@@ -27,7 +27,9 @@ use rustup::cli::rustup_mode;
27
27
#[ cfg( windows) ]
28
28
use rustup:: cli:: self_update;
29
29
use 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
+ } ;
31
33
use rustup:: env_var:: RUST_RECURSION_COUNT_MAX ;
32
34
use rustup:: is_proxyable_tools;
33
35
use rustup:: utils:: utils:: { self , ExitCode } ;
@@ -68,7 +70,9 @@ async fn maybe_trace_rustup() -> Result<utils::ExitCode> {
68
70
trace:: { self , Sampler } ,
69
71
Resource ,
70
72
} ;
71
- use tracing_subscriber:: { layer:: SubscriberExt , EnvFilter , Registry } ;
73
+ use tracing_subscriber:: { fmt, layer:: SubscriberExt , EnvFilter , Registry } ;
74
+
75
+ let curr_process = process ( ) ;
72
76
73
77
global:: set_text_map_propagator ( TraceContextPropagator :: new ( ) ) ;
74
78
let tracer = opentelemetry_otlp:: new_pipeline ( )
@@ -86,7 +90,14 @@ async fn maybe_trace_rustup() -> Result<utils::ExitCode> {
86
90
. install_batch ( opentelemetry_sdk:: runtime:: Tokio ) ?;
87
91
let env_filter = EnvFilter :: try_from_default_env ( ) . unwrap_or ( EnvFilter :: new ( "INFO" ) ) ;
88
92
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) ;
90
101
tracing:: subscriber:: set_global_default ( subscriber) ?;
91
102
let result = run_rustup ( ) . await ;
92
103
// We're tracing, so block until all spans are exported.
0 commit comments