]>
Commit | Line | Data |
---|---|---|
9fa01778 XL |
1 | use context::Context; |
2 | #[cfg(not(feature = "no_logging"))] | |
3 | use error::RenderError; | |
83c7162d | 4 | use helpers::{HelperDef, HelperResult}; |
9fa01778 | 5 | use output::Output; |
8bb4bdeb | 6 | use registry::Registry; |
83c7162d | 7 | use render::{Helper, RenderContext}; |
9fa01778 XL |
8 | #[cfg(not(feature = "no_logging"))] |
9 | use value::JsonRender; | |
10 | #[cfg(not(feature = "no_logging"))] | |
11 | use log::Level; | |
12 | #[cfg(not(feature = "no_logging"))] | |
13 | use std::str::FromStr; | |
8bb4bdeb XL |
14 | |
15 | #[derive(Clone, Copy)] | |
16 | pub struct LogHelper; | |
17 | ||
9fa01778 | 18 | #[cfg(not(feature = "no_logging"))] |
8bb4bdeb | 19 | impl HelperDef for LogHelper { |
9fa01778 XL |
20 | fn call<'reg: 'rc, 'rc>( |
21 | &self, | |
22 | h: &Helper, | |
23 | _: &Registry, | |
24 | _: &Context, | |
25 | _: &mut RenderContext, | |
26 | _: &mut Output, | |
27 | ) -> HelperResult { | |
28 | let param = h | |
29 | .param(0) | |
30 | .ok_or_else(|| RenderError::new("Param not found for helper \"log\""))?; | |
31 | let level = h.hash_get("level") | |
32 | .and_then(|v| v.value().as_str()) | |
33 | .unwrap_or("info"); | |
8bb4bdeb | 34 | |
9fa01778 XL |
35 | if let Ok(log_level) = Level::from_str(level) { |
36 | log!(log_level, "{}: {}", | |
37 | param.path().unwrap_or(&"".to_owned()), | |
38 | param.value().render()) | |
39 | } else { | |
40 | return Err(RenderError::new(&format!("Unsupported logging level {}", level))); | |
41 | } | |
42 | Ok(()) | |
43 | } | |
44 | } | |
8bb4bdeb | 45 | |
9fa01778 XL |
46 | #[cfg(feature = "no_logging")] |
47 | impl HelperDef for LogHelper { | |
48 | fn call<'reg: 'rc, 'rc>( | |
49 | &self, | |
50 | _: &Helper, | |
51 | _: &Registry, | |
52 | _: &Context, | |
53 | _: &mut RenderContext, | |
54 | _: &mut Output, | |
55 | ) -> HelperResult { | |
8bb4bdeb XL |
56 | Ok(()) |
57 | } | |
58 | } | |
59 | ||
60 | pub static LOG_HELPER: LogHelper = LogHelper; |