Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 6 additions & 35 deletions ipc/observability/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,16 @@ pub enum LogLevel {
Off,
Error,
Warn,
#[default]
Info,
Debug,
#[default]
Trace,
}

impl LogLevel {
pub fn to_filter(&self) -> anyhow::Result<EnvFilter> {
// At this point the filter should have been parsed before,
// but if we created a log level directly, it can fail.
// We fail if it doesn't parse because presumably we _want_ to see those things.
Ok(EnvFilter::try_new(self.to_string())?)
impl Into<EnvFilter> for LogLevel {
fn into(self) -> EnvFilter {
// By default EnvFilter uses INFO, just like our default log level.
EnvFilter::try_new(self.to_string()).unwrap_or_default()
}
}

Expand Down Expand Up @@ -71,25 +69,11 @@ pub struct TracingSettings {
}

#[serde_as]
#[derive(Debug, Deserialize, Clone)]
#[derive(Debug, Deserialize, Clone, Default)]
pub struct ConsoleLayerSettings {
pub level: Option<LogLevel>,
}

impl ConsoleLayerSettings {
pub fn level_to_filter(&self) -> EnvFilter {
level_to_filter(&self.level)
}
}

impl Default for ConsoleLayerSettings {
fn default() -> Self {
ConsoleLayerSettings {
level: Some(LogLevel::default()),
}
}
}

#[serde_as]
#[derive(Debug, Deserialize, Clone, Default)]
pub struct FileLayerSettings {
Expand All @@ -101,16 +85,3 @@ pub struct FileLayerSettings {
pub domain_filter: Option<Vec<String>>,
pub events_filter: Option<Vec<String>>,
}

impl FileLayerSettings {
pub fn level_to_filter(&self) -> EnvFilter {
level_to_filter(&self.level)
}
}

pub fn level_to_filter(level: &Option<LogLevel>) -> EnvFilter {
match level {
Some(level) => level.to_filter().unwrap_or_default(),
None => LogLevel::Trace.to_filter().unwrap_or_default(),
}
}
18 changes: 11 additions & 7 deletions ipc/observability/src/traces.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ use tracing::Level;
pub use tracing_appender::non_blocking;
pub use tracing_appender::non_blocking::WorkerGuard;
use tracing_appender::rolling::RollingFileAppender;
use tracing_subscriber::{fmt, fmt::Subscriber, layer::SubscriberExt, Layer};
use tracing_subscriber::{fmt, fmt::Subscriber, layer::SubscriberExt, EnvFilter, Layer};

use crate::config::{level_to_filter, FileLayerSettings, TracingSettings};
use crate::config::{FileLayerSettings, TracingSettings};
use crate::tracing_layers::DomainEventFilterLayer;

// Creates a temporary subscriber that logs all traces to stderr. Useful when global tracing is not set yet.
Expand All @@ -23,10 +23,12 @@ pub fn create_temporary_subscriber() -> Subscriber {

// Sets a global tracing subscriber with the given configuration. Returns a guard that can be used to drop the subscriber.
pub fn set_global_tracing_subscriber(config: &TracingSettings) -> Option<WorkerGuard> {
let console_filter = match &config.console {
Some(console_settings) => console_settings.level_to_filter(),
None => level_to_filter(&None),
};
let console_filter: EnvFilter = config
.console
.as_ref()
.and_then(|c| c.level.clone())
.unwrap_or_default()
.into();

// log all traces to stderr (reserving stdout for any actual output such as from the CLI commands)
let console_layer = fmt::layer()
Expand All @@ -40,14 +42,16 @@ pub fn set_global_tracing_subscriber(config: &TracingSettings) -> Option<WorkerG
Some(file_settings) if file_settings.enabled => {
let (non_blocking, file_guard) = non_blocking(create_file_appender(file_settings));

let file_filter: EnvFilter = file_settings.level.clone().unwrap_or_default().into();

let file_layer = fmt::layer()
.json()
.with_writer(non_blocking)
.with_span_events(fmt::format::FmtSpan::CLOSE)
.with_target(false)
.with_file(true)
.with_line_number(true)
.with_filter(file_settings.level_to_filter());
.with_filter(file_filter);

let domains = file_settings
.domain_filter
Expand Down