summaryrefslogtreecommitdiffstats
path: root/src/logging/level.rs
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2022-11-18 18:13:19 -0600
committerToby Vincent <tobyv13@gmail.com>2022-11-18 18:42:42 -0600
commit66256e222ac5dba71fec159e2a31ebd4a002caa1 (patch)
treea8b5bd8d066bb083ee3f1df87ca81346b8f55b14 /src/logging/level.rs
parent09be0362d42034e343b64de08618c995b63c90fe (diff)
feat: impl logging as a seperate module with stdout
Diffstat (limited to 'src/logging/level.rs')
-rw-r--r--src/logging/level.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/logging/level.rs b/src/logging/level.rs
new file mode 100644
index 0000000..6134c24
--- /dev/null
+++ b/src/logging/level.rs
@@ -0,0 +1,22 @@
+use serde::{Deserialize, Deserializer, Serialize, Serializer};
+pub use tracing::Level;
+
+pub fn serialize<S>(value: &Option<Level>, serializer: S) -> Result<S::Ok, S::Error>
+where
+ S: Serializer,
+{
+ value
+ .map(|l| l.to_string().to_lowercase())
+ .serialize(serializer)
+}
+
+pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<Level>, D::Error>
+where
+ D: Deserializer<'de>,
+{
+ let Some(s) = Option::<String>::deserialize(deserializer)? else {
+ return Ok(None)
+};
+ s.parse().map_err(serde::de::Error::custom).map(Some)
+}
+