use std::path::PathBuf; use log4rs::{ append::{ console::ConsoleAppender, file::FileAppender, }, config::{Appender, Config, Root}, encode::pattern::PatternEncoder, }; use log::info; pub fn setup_logging(log_path: &PathBuf) -> anyhow::Result<()> { let logfile = FileAppender::builder() .encoder(Box::new(PatternEncoder::new("{d} {l} - {m}\n"))) .build(log_path)?; let stdout = ConsoleAppender::builder() .encoder(Box::new(PatternEncoder::new("{h({l})} {m}\n"))) .build(); let config = Config::builder() .appender(Appender::builder().build("stdout", Box::new(stdout))) .appender(Appender::builder().build("logfile", Box::new(logfile))) .build( Root::builder() .appender("stdout") .appender("logfile") .build(log::LevelFilter::Info), )?; log4rs::init_config(config)?; // Это сообщение теперь будет выведено сразу после названия сервера println! ("\n"); info!("Logging initialized. Log file: {}", log_path.display()); Ok(()) }