aboutsummaryrefslogtreecommitdiff
path: root/src/logging.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/logging.rs')
-rw-r--r--src/logging.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/logging.rs b/src/logging.rs
new file mode 100644
index 00000000..899a9588
--- /dev/null
+++ b/src/logging.rs
@@ -0,0 +1,29 @@
+pub(crate) fn init_file_logging(file_name: &str) {
+ use std::fs::{self, OpenOptions};
+ use tracing_subscriber::EnvFilter;
+
+ let log_dir = crate::config::config_dir();
+ let _ = fs::create_dir_all(&log_dir);
+ let log_path = log_dir.join(file_name);
+
+ if let Ok(meta) = fs::metadata(&log_path) {
+ if meta.len() > 5 * 1024 * 1024 {
+ let _ = fs::remove_file(&log_path);
+ }
+ }
+
+ let file = match OpenOptions::new().create(true).append(true).open(&log_path) {
+ Ok(file) => file,
+ Err(_) => return,
+ };
+
+ let filter =
+ EnvFilter::try_from_env("HERDR_LOG").unwrap_or_else(|_| EnvFilter::new("herdr=info"));
+
+ let _ = tracing_subscriber::fmt()
+ .with_env_filter(filter)
+ .with_writer(file)
+ .with_ansi(false)
+ .with_target(false)
+ .try_init();
+}