From 347d9da663f1184b26b956a25c48e0dadb87cdcb Mon Sep 17 00:00:00 2001 From: Michael Melanson Date: Sun, 28 Apr 2024 19:50:17 -0400 Subject: [PATCH] Improve minijinja and tera template error logs. --- contrib/dyn_templates/src/engine/minijinja.rs | 24 ++++++++++++++----- contrib/dyn_templates/src/engine/tera.rs | 3 +-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/contrib/dyn_templates/src/engine/minijinja.rs b/contrib/dyn_templates/src/engine/minijinja.rs index 88ae051f..8f2296e9 100644 --- a/contrib/dyn_templates/src/engine/minijinja.rs +++ b/contrib/dyn_templates/src/engine/minijinja.rs @@ -43,13 +43,25 @@ impl Engine for Environment<'static> { } fn render(&self, name: &str, context: C) -> Option { - let Ok(template) = self.get_template(name) else { - error_!("Minijinja template '{name}' was not found."); - return None; + let template = match self.get_template(name) { + Ok(template) => template, + Err(e) => { + error_!("Minijinja template '{name}' error: {e}"); + return None; + } }; - template.render(context) - .map_err(|e| error_!("Minijinja: {}", e)) - .ok() + match template.render(context) { + Ok(result) => Some(result), + Err(e) => { + error_!("Error rendering Minijinja template '{name}': {e}"); + let mut error = &e as &dyn std::error::Error; + while let Some(source) = error.source() { + error_!("caused by: {source}"); + error = source; + } + None + } + } } } diff --git a/contrib/dyn_templates/src/engine/tera.rs b/contrib/dyn_templates/src/engine/tera.rs index 7e783f7e..9cba0e8a 100644 --- a/contrib/dyn_templates/src/engine/tera.rs +++ b/contrib/dyn_templates/src/engine/tera.rs @@ -48,8 +48,7 @@ impl Engine for Tera { match Tera::render(self, name, &tera_ctx) { Ok(string) => Some(string), Err(e) => { - error_!("Error rendering Tera template '{}'.", name); - + error_!("Error rendering Tera template '{name}': {e}"); let mut error = Some(&e as &dyn Error); while let Some(err) = error { error_!("{}", err);