1use simplelog::*;
2use std::fs::File;
3
4const LOG_FILE: &str = "rsc/log/main.log";
6pub const DEFAULT_LEVEL_TERM: LevelFilter = LevelFilter::Trace;
8pub const DEFAULT_LEVEL_WRITE: LevelFilter = LevelFilter::Trace;
10
11pub type LevelFilter = simplelog::LevelFilter;
13
14pub fn log_init(term_level: LevelFilter, write_level: LevelFilter) {
16 CombinedLogger::init(vec![
17 TermLogger::new(
18 term_level,
19 Config::default(),
20 TerminalMode::Mixed,
21 ColorChoice::Auto,
22 ),
23 WriteLogger::new(
24 write_level,
25 Config::default(),
26 File::create(LOG_FILE).unwrap(),
27 ),
28 ])
29 .unwrap();
30}
31
32#[macro_export]
34macro_rules! log_init {
35 () => {
36 $crate::core::log::log_init(
37 $crate::core::log::DEFAULT_LEVEL_TERM,
38 $crate::core::log::DEFAULT_LEVEL_WRITE,
39 )
40 };
41 ($term_level:expr) => {
42 $crate::core::log::log_init($term_level, $crate::toolbox::log::DEFAULT_LEVEL_WRITE)
43 };
44 ($term_level:expr, $write_level:expr) => {
45 $crate::core::log::log_init($term_level, $write_level)
46 };
47}
48
49#[macro_export]
51macro_rules! error {
52 (target: $target:expr, $($arg:tt)+) => (
53 log::error!(target: $target, $($arg)+)
54 );
55 ($($arg:tt)+) => (
56 log::error!($($arg)+)
57 )
58}
59
60#[macro_export]
62macro_rules! warn {
63 (target: $target:expr, $($arg:tt)+) => (
64 log::warn!(target: $target, $($arg)+)
65 );
66 ($($arg:tt)+) => (
67 log::warn!($($arg)+)
68 )
69}
70
71#[macro_export]
73macro_rules! info {
74 (target: $target:expr, $($arg:tt)+) => (
75 log::info!(target: $target, $($arg)+)
76 );
77 ($($arg:tt)+) => (
78 log::info!($($arg)+)
79 )
80}
81
82#[macro_export]
84macro_rules! debug {
85 (target: $target:expr, $($arg:tt)+) => {
86 log::debug!(target: $target, $($arg)+)
87 };
88 ($($arg:tt)+) => {
89 log::debug!($($arg)+)
90 };
91 () => {
92 log::debug!("")
93 }
94}
95
96#[macro_export]
98macro_rules! trace {
99 (target: $target:expr, $($arg:tt)+) => {
100 log::trace!(target: $target, $($arg)+)
101 };
102 ($($arg:tt)+) => {
103 log::trace!($($arg)+)
104 };
105 () => {
106 log::trace!("")
107 }
108}