alfred_workflow_rust_project/
alfred_logger.rs1use log::LevelFilter;
2
3
4use log4rs::append::rolling_file::policy::compound::roll::fixed_window::{
5 FixedWindowRoller,
6};
7use log4rs::append::rolling_file::policy::compound::trigger::size::SizeTrigger;
8use log4rs::append::rolling_file::policy::compound::{CompoundPolicy};
9use log4rs::append::rolling_file::RollingFileAppender;
10use log4rs::config::{Appender, Root};
11use log4rs::encode::pattern::PatternEncoder;
12use log4rs::Config;
13
14
15pub struct Logger {}
16
17
18impl Logger {
19 pub fn init() {
20 let appender_name = "app_log_appender";
21 let log_path = std::env::var("HOME").unwrap();
22 let log_name = format!("{}/.alfred/ali_workflow.log", log_path);
23 let archive_name = log_name.as_str().to_owned() + "{}";
24 let config = Config::builder()
25 .appender(
26 Appender::builder().build(
27 appender_name,
28 Box::new(
29 RollingFileAppender::builder()
30 .append(true)
31 .encoder(Box::new(PatternEncoder::new(
32 "{d(%+)(local)} {h({l})} [{f}-> line:{L}] {m}-{n}",
33 )))
34 .build(
35 log_name,
36 Box::new(CompoundPolicy::new(
37 Box::new(SizeTrigger::new(1023)),
38 Box::new(
39 FixedWindowRoller::builder()
40 .build(&archive_name, 10)
41 .unwrap(),
42 ),
43 )),
44 )
45 .unwrap(),
46 ),
47 ),
48 )
49 .build(
50 Root::builder()
51 .appender(appender_name)
52 .build(LevelFilter::Trace),
53 )
54 .unwrap();
55
56 log4rs::init_config(config).unwrap();
57 }
58}