Skip to content

Commit d2c6554

Browse files
authored
Print memory profiling logs even when OTLP exports are enabled (#5827)
* Print memory profiling logs even when OTLP exports are enabled * Clarify log level reload errors * Clarify comment about reloadable env filter * Fix comment typos
1 parent 4d0ffc3 commit d2c6554

File tree

2 files changed

+38
-37
lines changed

2 files changed

+38
-37
lines changed

quickwit/quickwit-cli/src/logger.rs

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
5355
pub 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>,

quickwit/quickwit-serve/src/developer_api/log_level.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,17 @@ pub fn log_level_handler(
4040
Ok(_) => {
4141
info!(filter = env_filter.filter, "setting log level");
4242
warp::reply::with_status(
43-
format!("set log level to:[{}]", env_filter.filter),
43+
format!("set log level to: [{}]", env_filter.filter),
4444
StatusCode::OK,
4545
)
4646
}
47-
Err(_) => {
48-
error!(filter = env_filter.filter, "invalid log level");
47+
Err(err) => {
48+
error!(filter = env_filter.filter, %err, "failed to set log level");
4949
warp::reply::with_status(
50-
format!("invalid log level:[{}]", env_filter.filter),
50+
format!(
51+
"failed to set log level to: [{}], {}",
52+
env_filter.filter, err
53+
),
5154
StatusCode::BAD_REQUEST,
5255
)
5356
}

0 commit comments

Comments
 (0)