fix(rust): only apply filter to select tracing layers (#9872)

Applying a filter globally to the entire subscriber means it filters
events for all layers. This prevents the Sentry layer from uploading
DEBUG logs if configured.
This commit is contained in:
Thomas Eizinger
2025-07-15 06:44:53 -07:00
committed by GitHub
parent cb497a7435
commit 2b70596636
3 changed files with 17 additions and 13 deletions

View File

@@ -207,12 +207,13 @@ fn init_logging(log_dir: PathBuf, log_filter: String) -> Result<()> {
return Ok(());
}
let (env_filter, reload_handle) = firezone_logging::try_filter(&log_filter)?;
let (file_log_filter, file_reload_handle) = firezone_logging::try_filter(&log_filter)?;
let (oslog_log_filter, oslog_reload_handle) = firezone_logging::try_filter(&log_filter)?;
let (file_layer, handle) = firezone_logging::file::layer(&log_dir, "connlib");
let subscriber = tracing_subscriber::registry()
.with(env_filter)
.with(file_layer.with_filter(file_log_filter))
.with(
tracing_subscriber::fmt::layer()
.with_ansi(false)
@@ -224,11 +225,13 @@ fn init_logging(log_dir: PathBuf, log_filter: String) -> Result<()> {
.with_writer(make_writer::MakeWriter::new(
"dev.firezone.firezone",
"connlib",
)),
))
.with_filter(oslog_log_filter),
)
.with(file_layer)
.with(sentry_layer());
let reload_handle = file_reload_handle.merge(oslog_reload_handle);
firezone_logging::init(subscriber)?;
LOGGER_STATE

View File

@@ -17,7 +17,7 @@ use platform::RELEASE;
use secrecy::{Secret, SecretString};
use socket_factory::{SocketFactory, TcpSocket, UdpSocket};
use tokio::sync::Mutex;
use tracing_subscriber::layer::SubscriberExt as _;
use tracing_subscriber::{Layer, layer::SubscriberExt as _};
uniffi::setup_scaffolding!();
@@ -296,12 +296,12 @@ fn init_logging(log_dir: &Path, log_filter: String) -> Result<()> {
return Ok(());
}
let (log_filter, reload_handle) = firezone_logging::try_filter(&log_filter)?;
let (file_log_filter, file_reload_handle) = firezone_logging::try_filter(&log_filter)?;
let (platform_log_filter, platform_reload_handle) = firezone_logging::try_filter(&log_filter)?;
let (file_layer, handle) = firezone_logging::file::layer(log_dir, "connlib");
let subscriber = tracing_subscriber::registry()
.with(log_filter)
.with(file_layer)
.with(file_layer.with_filter(file_log_filter))
.with(
tracing_subscriber::fmt::layer()
.with_ansi(false)
@@ -310,10 +310,13 @@ fn init_logging(log_dir: &Path, log_filter: String) -> Result<()> {
.without_timestamp()
.without_level(),
)
.with_writer(platform::MakeWriter::default()),
.with_writer(platform::MakeWriter::default())
.with_filter(platform_log_filter),
)
.with(sentry_layer());
let reload_handle = file_reload_handle.merge(platform_reload_handle);
firezone_logging::init(subscriber)?;
LOGGER_STATE

View File

@@ -250,8 +250,7 @@ fn setup_tracing(args: &Args) -> Result<FilterReloadHandle> {
let (filter, reload_handle) = firezone_logging::try_filter(&directives)?;
let dispatch: Dispatch = tracing_subscriber::registry()
.with(log_layer(args))
.with(filter)
.with(log_layer(args).with_filter(filter))
.with(sentry_layer())
.into();
@@ -296,9 +295,8 @@ fn setup_tracing(args: &Args) -> Result<FilterReloadHandle> {
let (filter, reload_handle) = firezone_logging::try_filter(&directives)?;
let dispatch: Dispatch = tracing_subscriber::registry()
.with(log_layer(args))
.with(log_layer(args).with_filter(filter))
.with(tracing_opentelemetry::layer().with_tracer(tracer_provider.tracer("relay")))
.with(filter)
.with(sentry_layer())
.into();