From b72e0df512578fc66b0eb2cced35595b1707542c Mon Sep 17 00:00:00 2001 From: Sanchith Hegde <22217505+SanchithHegde@users.noreply.github.com> Date: Wed, 7 Dec 2022 14:32:12 +0530 Subject: [PATCH] feat(settings): log path to field where config deserialization failed (#78) Co-authored-by: Arun Raj M --- Cargo.lock | 10 ++++++++++ crates/router/Cargo.toml | 1 + crates/router/src/configs/settings.rs | 8 ++++---- crates/router/src/core/errors.rs | 2 +- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e107e0a17..f0aee27d84 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2650,6 +2650,7 @@ dependencies = [ "router_env", "serde", "serde_json", + "serde_path_to_error", "serde_qs", "serde_urlencoded", "sha2", @@ -2894,6 +2895,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "184c643044780f7ceb59104cef98a5a6f12cb2288a7bc701ab93a362b49fd47d" +dependencies = [ + "serde", +] + [[package]] name = "serde_qs" version = "0.10.1" diff --git a/crates/router/Cargo.toml b/crates/router/Cargo.toml index 06bf5394bb..2bea53f1e5 100644 --- a/crates/router/Cargo.toml +++ b/crates/router/Cargo.toml @@ -53,6 +53,7 @@ reqwest = { version = "0.11.12", features = ["json"] } ring = "0.16.20" serde = { version = "1.0.145", features = ["derive"] } serde_json = "1.0.85" +serde_path_to_error = "0.1.8" serde_qs = { version = "0.10.1", optional = true } serde_urlencoded = "0.7.1" sha2 = "0.10.5" diff --git a/crates/router/src/configs/settings.rs b/crates/router/src/configs/settings.rs index 1a5059a324..5405623525 100644 --- a/crates/router/src/configs/settings.rs +++ b/crates/router/src/configs/settings.rs @@ -165,10 +165,10 @@ impl Settings { ) .build()?; - config.try_deserialize().map_err(|e| { - logger::error!("Unable to source config file"); - eprintln!("Unable to source config file"); - BachError::from(e) + serde_path_to_error::deserialize(config).map_err(|error| { + logger::error!(%error, "Unable to deserialize application configuration"); + eprintln!("Unable to deserialize application configuration: {error}"); + BachError::from(error.into_inner()) }) } } diff --git a/crates/router/src/core/errors.rs b/crates/router/src/core/errors.rs index 0c1067bfbb..6aa621d406 100644 --- a/crates/router/src/core/errors.rs +++ b/crates/router/src/core/errors.rs @@ -119,7 +119,7 @@ pub enum BachError { #[error("{{ error_description: Error while parsing, error_message: {0} }}")] EParsingError(error_stack::Report), - #[error("Environment configuration error: {0}")] + #[error("Application configuration error: {0}")] ConfigurationError(ConfigError), #[error("{{ error_description: Database operation failed, error_message: {0} }}")]