@@ -50,6 +50,8 @@ fn startup_env_filter(level: Level) -> anyhow::Result<EnvFilter> {
5050 Ok ( env_filter)
5151}
5252
53+ type ReloadLayer = tracing_subscriber:: reload:: Layer < EnvFilter , tracing_subscriber:: Registry > ;
54+
5355pub fn setup_logging_and_tracing (
5456 level : Level ,
5557 ansi_colors : bool ,
@@ -63,9 +65,31 @@ pub fn setup_logging_and_tracing(
6365 }
6466 }
6567 global:: set_text_map_propagator ( TraceContextPropagator :: new ( ) ) ;
66- let ( reloadable_env_filter, reload_handle) =
67- tracing_subscriber:: reload:: Layer :: new ( startup_env_filter ( level) ?) ;
68+
69+ let event_format = EventFormat :: get_from_env ( ) ;
70+ let fmt_fields = event_format. format_fields ( ) ;
6871 let registry = tracing_subscriber:: registry ( ) ;
72+
73+ let ( reloadable_env_filter, reload_handle) = ReloadLayer :: new ( startup_env_filter ( level) ?) ;
74+
75+ #[ cfg( not( feature = "jemalloc-profiled" ) ) ]
76+ let registry = registry. with ( reloadable_env_filter) . with (
77+ tracing_subscriber:: fmt:: layer ( )
78+ . event_format ( event_format)
79+ . fmt_fields ( fmt_fields)
80+ . with_ansi ( ansi_colors) ,
81+ ) ;
82+
83+ #[ cfg( feature = "jemalloc-profiled" ) ]
84+ let registry = jemalloc_profiled:: configure_registry (
85+ registry,
86+ event_format,
87+ fmt_fields,
88+ ansi_colors,
89+ level,
90+ reloadable_env_filter,
91+ ) ?;
92+
6993 // Note on disabling ANSI characters: setting the ansi boolean on event format is insufficient.
7094 // It is thus set on layers, see https://github.com/tokio-rs/tracing/issues/1817
7195 if get_bool_from_env ( QW_ENABLE_OPENTELEMETRY_OTLP_EXPORTER_ENV_KEY , false ) {
@@ -92,40 +116,11 @@ pub fn setup_logging_and_tracing(
92116 . build ( ) ;
93117 let tracer = provider. tracer ( "quickwit" ) ;
94118 let telemetry_layer = tracing_opentelemetry:: layer ( ) . with_tracer ( tracer) ;
95-
96- let event_format = EventFormat :: get_from_env ( ) ;
97- let fmt_fields = event_format. format_fields ( ) ;
98-
99119 registry
100- . with ( reloadable_env_filter)
101120 . with ( telemetry_layer)
102- . with (
103- tracing_subscriber:: fmt:: layer ( )
104- . event_format ( event_format)
105- . fmt_fields ( fmt_fields)
106- . with_ansi ( ansi_colors) ,
107- )
108121 . try_init ( )
109122 . context ( "failed to register tracing subscriber" ) ?;
110123 } else {
111- let event_format = EventFormat :: get_from_env ( ) ;
112- let fmt_fields = event_format. format_fields ( ) ;
113- #[ cfg( not( feature = "jemalloc-profiled" ) ) ]
114- let registry = registry. with ( reloadable_env_filter) . with (
115- tracing_subscriber:: fmt:: layer ( )
116- . event_format ( event_format)
117- . fmt_fields ( fmt_fields)
118- . with_ansi ( ansi_colors) ,
119- ) ;
120- #[ cfg( feature = "jemalloc-profiled" ) ]
121- let registry = jemalloc_profiled:: configure_registry (
122- registry,
123- event_format,
124- fmt_fields,
125- ansi_colors,
126- level,
127- ) ?;
128-
129124 registry
130125 . try_init ( )
131126 . context ( "failed to register tracing subscriber" ) ?;
@@ -232,10 +227,11 @@ pub(super) mod jemalloc_profiled {
232227 use tracing_subscriber:: registry:: LookupSpan ;
233228
234229 use super :: { EventFormat , FieldFormat , startup_env_filter, time_formatter} ;
230+ use crate :: logger:: ReloadLayer ;
235231
236232 /// An event formatter specific to the memory profiler output.
237233 ///
238- /// Also displays a backtrace after spans and the fields of the tracing
234+ /// Also displays a backtrace after the spans and fields of the tracing
239235 /// event (into separate lines).
240236 struct ProfilingFormat {
241237 time_formatter : UtcTime < Vec < BorrowedFormatItem < ' static > > > ,
@@ -309,13 +305,15 @@ pub(super) mod jemalloc_profiled {
309305 ///
310306 /// The the jemalloc profiler formatter disables the env filter reloading
311307 /// because the [tracing_subscriber::reload::Layer] seems to overwrite the
312- /// TRACE level span filter even though it's applied to a separate layer.
308+ /// filter configured by [profiler_tracing_filter()] even though it is
309+ /// applied to a separate layer.
313310 pub ( super ) fn configure_registry < S > (
314311 registry : S ,
315312 event_format : EventFormat < ' static > ,
316313 fmt_fields : FieldFormat ,
317314 ansi_colors : bool ,
318315 level : Level ,
316+ _reloadable_env_filter : ReloadLayer ,
319317 ) -> anyhow:: Result < impl Subscriber + for <' span > LookupSpan < ' span > >
320318 where
321319 S : Subscriber + for < ' span > LookupSpan < ' span > ,
0 commit comments