napi_package_template/
logger.rs1#![allow(non_snake_case)]
2#![allow(dead_code)]
3#![allow(unused_variables)]
4#![allow(unused_imports)]
5#![allow(unused_attributes)]
6#![allow(non_snake_case)]
7#![allow(unused_mut)]
8#![allow(unused_assignments)]
9#![allow(unused_unsafe)]
10
11use std::collections::{HashMap, HashSet};
12use std::thread;
13
14use lazy_static::lazy_static;
15use log4rs::append::rolling_file::policy::compound::{roll::fixed_window::FixedWindowRoller, trigger::size::SizeTrigger, CompoundPolicy};
16use log4rs::append::Append;
17use log4rs::append::{console::ConsoleAppender, file::FileAppender, rolling_file::RollingFileAppender};
18use log4rs::config::{Appender, Logger, Root};
19use log4rs::encode::json::{JsonEncoder, JsonEncoderConfig};
20use log4rs::encode::pattern::PatternEncoder;
21use log4rs::encode::writer::simple::SimpleWriter;
22use log4rs::encode::Style;
23use log4rs::filter::threshold::ThresholdFilter;
24use log4rs::filter::{Filter, FilterConfig};
25use log4rs::Config;
26
27use crate::configration;
28use log::{Level, LevelFilter, Record};
29
30lazy_static! {
31 static ref TRIGGER_FILE_SIZE : u64 = configration::get::<u64>(&"logger.logFileSize".to_string());
36 static ref ROLLER_FILEPATH_PATTERN: String = configration::get::<String>(&"logger.roller_filepath_pattern".to_string());
37 static ref ROLLER_MAX_COUNT: u32 = configration::get::<u32>(&"logger.roller_max_count".to_string()) as u32;
38 static ref ROLLER_BASE_START: u32 = configration::get::<u32>(&"logger.roller_base_start".to_string()) as u32;
39 static ref ALL_LOG_FILE_PATH:String = configration::get::<String>(&"logger.all_logs_common_file_path".to_string());
40}
41
42pub struct RollingFileAppenderComponent {
43 pub trigger: Box<SizeTrigger>,
44 pub roller: Box<FixedWindowRoller>,
45 pub compound_policy: Box<CompoundPolicy>,
46}
47impl RollingFileAppenderComponent {
48 pub fn new() -> Box<CompoundPolicy> {
49 let trigger = Box::new(SizeTrigger::new(*TRIGGER_FILE_SIZE));
51 let roller = Box::new(FixedWindowRoller::builder().base(*ROLLER_BASE_START).build(&ROLLER_FILEPATH_PATTERN, *ROLLER_MAX_COUNT).unwrap());
52 let compound_policy = Box::new(CompoundPolicy::new(trigger.clone(), roller.clone()));
53 return compound_policy;
54 }
55}
56
57pub struct LoggerConfig {}
58impl LoggerConfig {
59 pub fn create_Global_logs_config() -> Config {
60 let compound_policy: Box<CompoundPolicy> = RollingFileAppenderComponent::new();
62
63 let console_appender = ConsoleAppender::builder().encoder(Box::new(PatternEncoder::new("{l} - {m}{n}"))).build();
65
66 let all_log_appender = RollingFileAppender::builder().encoder(Box::new(JsonEncoder::new())).build(*&ALL_LOG_FILE_PATH.as_str(), compound_policy).unwrap();
74
75 let Global_logs_config = Config::builder()
83 .appender(Appender::builder().filter(Box::new(ThresholdFilter::new(LevelFilter::Info))).build("console_appender", Box::new(console_appender)))
84 .appender(Appender::builder().filter(Box::new(ThresholdFilter::new(LevelFilter::Error))).build("all_log_appender", Box::new(all_log_appender)))
85 .logger(Logger::builder().appender("all_log_appender").additive(true).build("All-Logs", LevelFilter::Error))
86 .logger(Logger::builder().appender("console_appender").additive(true).build("console", LevelFilter::Info))
87 .build(Root::builder().appenders(["console_appender", "all_log_appender"]).build(LevelFilter::Trace))
88 .unwrap();
89 return Global_logs_config;
90 }
91}
92