From 57cb54edf0c81221417a3ed1c11e3d86c86a0364 Mon Sep 17 00:00:00 2001 From: Bart Platak Date: Tue, 22 Jul 2025 17:07:40 +0100 Subject: [PATCH 1/3] feat(pyth-lazer-agent) Make the logging format configurable --- apps/pyth-lazer-agent/src/main.rs | 54 +++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/apps/pyth-lazer-agent/src/main.rs b/apps/pyth-lazer-agent/src/main.rs index 7d319a7c4c..df667c3849 100644 --- a/apps/pyth-lazer-agent/src/main.rs +++ b/apps/pyth-lazer-agent/src/main.rs @@ -1,3 +1,4 @@ +use serde::Deserialize; use { crate::lazer_publisher::LazerPublisher, anyhow::Context, @@ -19,33 +20,58 @@ mod websocket_utils; struct Cli { #[clap(short, long, default_value = "config/config.toml")] config: String, + #[clap(short, long, default_value = "json")] + log_format: LogFormat, +} + +#[derive(clap::ValueEnum, Clone, Deserialize, Default)] +#[serde(rename_all = "kebab-case")] +enum LogFormat { + #[default] + Json, + Compact, + Pretty, } #[tokio::main] async fn main() -> anyhow::Result<()> { + let args = Cli::parse(); + init_tracing_subscriber(args.log_format); + + let config = + config::load_config(args.config.to_string()).context("Failed to read config file")?; + info!(?config, "starting lazer-agent"); + + let lazer_publisher = LazerPublisher::new(&config).await; + http_server::run(config, lazer_publisher).await?; + + Ok(()) +} + +fn init_tracing_subscriber(log_format: LogFormat) { + #[allow( clippy::expect_used, reason = "application can fail on invalid RUST_LOG" )] - tracing_subscriber::fmt() + let subscriber = tracing_subscriber::fmt() .with_env_filter( EnvFilter::builder() .with_default_directive(LevelFilter::INFO.into()) .from_env() .expect("invalid RUST_LOG env var"), ) - .with_span_events(FmtSpan::NONE) - .json() - .with_span_list(false) - .init(); - - let args = Cli::parse(); - let config = - config::load_config(args.config.to_string()).context("Failed to read config file")?; - info!(?config, "starting lazer-agent"); - - let lazer_publisher = LazerPublisher::new(&config).await; - http_server::run(config, lazer_publisher).await?; + .with_span_events(FmtSpan::NONE); - Ok(()) + match log_format { + LogFormat::Json => { + subscriber.json().with_span_list(false).init(); + } + LogFormat::Compact => { + subscriber.compact().init(); + } + LogFormat::Pretty => { + subscriber.pretty().init(); + } + } } From 37ee412f568da3cbd97b054b5433e4de5373cfec Mon Sep 17 00:00:00 2001 From: Bart Platak Date: Tue, 22 Jul 2025 17:08:21 +0100 Subject: [PATCH 2/3] add serde renames --- apps/pyth-lazer-agent/src/main.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/pyth-lazer-agent/src/main.rs b/apps/pyth-lazer-agent/src/main.rs index df667c3849..b730dfe56f 100644 --- a/apps/pyth-lazer-agent/src/main.rs +++ b/apps/pyth-lazer-agent/src/main.rs @@ -15,7 +15,8 @@ mod publisher_handle; mod relayer_session; mod websocket_utils; -#[derive(Parser)] +#[derive(Parser, Deserialize)] +#[serde(rename_all = "kebab-case")] #[command(version)] struct Cli { #[clap(short, long, default_value = "config/config.toml")] From 5a6448141bf455302e46847fd9b3fc87aa20c6e4 Mon Sep 17 00:00:00 2001 From: Bart Platak Date: Tue, 22 Jul 2025 17:58:32 +0100 Subject: [PATCH 3/3] remove unnecesary fmt specifier, fix lint issues --- apps/pyth-lazer-agent/src/main.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/pyth-lazer-agent/src/main.rs b/apps/pyth-lazer-agent/src/main.rs index b730dfe56f..28d5acf3ec 100644 --- a/apps/pyth-lazer-agent/src/main.rs +++ b/apps/pyth-lazer-agent/src/main.rs @@ -16,7 +16,6 @@ mod relayer_session; mod websocket_utils; #[derive(Parser, Deserialize)] -#[serde(rename_all = "kebab-case")] #[command(version)] struct Cli { #[clap(short, long, default_value = "config/config.toml")] @@ -26,7 +25,6 @@ struct Cli { } #[derive(clap::ValueEnum, Clone, Deserialize, Default)] -#[serde(rename_all = "kebab-case")] enum LogFormat { #[default] Json, @@ -50,7 +48,6 @@ async fn main() -> anyhow::Result<()> { } fn init_tracing_subscriber(log_format: LogFormat) { - #[allow( clippy::expect_used, reason = "application can fail on invalid RUST_LOG"