aboutsummaryrefslogtreecommitdiff
path: root/alacritty_terminal/src/config/debug.rs
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty_terminal/src/config/debug.rs')
-rw-r--r--alacritty_terminal/src/config/debug.rs61
1 files changed, 61 insertions, 0 deletions
diff --git a/alacritty_terminal/src/config/debug.rs b/alacritty_terminal/src/config/debug.rs
new file mode 100644
index 00000000..b7d1144f
--- /dev/null
+++ b/alacritty_terminal/src/config/debug.rs
@@ -0,0 +1,61 @@
+use log::LevelFilter;
+use serde::Deserializer;
+
+use crate::config::failure_default;
+
+/// Debugging options
+#[serde(default)]
+#[derive(Deserialize, Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Debug {
+ #[serde(default = "default_log_level", deserialize_with = "deserialize_log_level")]
+ pub log_level: LevelFilter,
+
+ #[serde(deserialize_with = "failure_default")]
+ pub print_events: bool,
+
+ /// Keep the log file after quitting
+ #[serde(deserialize_with = "failure_default")]
+ pub persistent_logging: bool,
+
+ /// Should show render timer
+ #[serde(deserialize_with = "failure_default")]
+ pub render_timer: bool,
+
+ /// Record ref test
+ #[serde(deserialize_with = "failure_default")]
+ pub ref_test: bool,
+}
+
+impl Default for Debug {
+ fn default() -> Self {
+ Self {
+ log_level: default_log_level(),
+ print_events: Default::default(),
+ persistent_logging: Default::default(),
+ render_timer: Default::default(),
+ ref_test: Default::default(),
+ }
+ }
+}
+
+fn default_log_level() -> LevelFilter {
+ LevelFilter::Warn
+}
+
+fn deserialize_log_level<'a, D>(deserializer: D) -> Result<LevelFilter, D::Error>
+where
+ D: Deserializer<'a>,
+{
+ Ok(match failure_default::<D, String>(deserializer)?.to_lowercase().as_str() {
+ "off" | "none" => LevelFilter::Off,
+ "error" => LevelFilter::Error,
+ "warn" => LevelFilter::Warn,
+ "info" => LevelFilter::Info,
+ "debug" => LevelFilter::Debug,
+ "trace" => LevelFilter::Trace,
+ level => {
+ error!("Problem with config: invalid log level {}; using level Warn", level);
+ default_log_level()
+ },
+ })
+}