mirror of
https://github.com/veeso/termscp.git
synced 2026-07-18 13:54:08 +02:00
43 lines
1.2 KiB
Rust
43 lines
1.2 KiB
Rust
//! ## Logging
|
|
//!
|
|
//! `logging` is the module which initializes the logging system for termscp
|
|
|
|
pub use simplelog::LevelFilter as LogLevel;
|
|
use simplelog::{ConfigBuilder, WriteLogger};
|
|
|
|
use super::environment::{get_log_paths, init_cache_dir};
|
|
use crate::utils::file::open_file;
|
|
|
|
/// Initialize logger
|
|
pub fn init(level: LogLevel) -> Result<(), String> {
|
|
// Init cache dir
|
|
let cache_dir = match init_cache_dir() {
|
|
Ok(Some(p)) => p,
|
|
Ok(None) => {
|
|
return Err(String::from(
|
|
"This system doesn't seem to support CACHE_DIR",
|
|
))
|
|
}
|
|
Err(err) => return Err(err),
|
|
};
|
|
let log_file_path = get_log_paths(cache_dir.as_path());
|
|
// Open log file
|
|
let file = open_file(log_file_path.as_path(), true, true, false)
|
|
.map_err(|e| format!("Failed to open file {}: {}", log_file_path.display(), e))?;
|
|
// Prepare log config
|
|
let config = ConfigBuilder::new().set_time_format_rfc3339().build();
|
|
// Make logger
|
|
WriteLogger::init(level, config, file).map_err(|e| format!("Failed to initialize logger: {e}"))
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod test {
|
|
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_system_logging_setup() {
|
|
assert!(init(LogLevel::Trace).is_ok());
|
|
}
|
|
}
|