1
- use crate :: files:: config:: get_config;
1
+ use crate :: files:: config:: Strategy :: { Append , Truncate } ;
2
+ use crate :: files:: config:: { get_config, Logs } ;
2
3
use crate :: files:: variables:: AppConfig ;
3
4
use chrono:: Local ;
4
5
use log:: { Level , LevelFilter , Log , Metadata , Record } ;
@@ -8,20 +9,7 @@ use std::io::Write;
8
9
use std:: sync:: { Arc , Mutex } ;
9
10
10
11
pub fn setup_logger ( ) -> Result < ( ) , Box < dyn Error > > {
11
- let ( log_level, log_strategy) = if let Ok ( config) = get_config ( ) {
12
- (
13
- match config. logs . level . to_lowercase ( ) . as_str ( ) {
14
- "info" => LevelFilter :: Info ,
15
- "warn" => LevelFilter :: Warn ,
16
- "debug" => LevelFilter :: Debug ,
17
- "trace" => LevelFilter :: Trace ,
18
- _ => LevelFilter :: Error ,
19
- } ,
20
- config. logs . strategy ,
21
- )
22
- } else {
23
- ( LevelFilter :: Info , "truncate" . to_string ( ) )
24
- } ;
12
+ let logs_config = get_config ( ) . map_or_else ( |_| Logs :: new ( ) , |config| config. logs ) ;
25
13
26
14
let config = AppConfig :: new ( ) ;
27
15
let log_file_path = config. logs_path ( ) ;
@@ -35,25 +23,27 @@ pub fn setup_logger() -> Result<(), Box<dyn Error>> {
35
23
let file = OpenOptions :: new ( )
36
24
. create ( true )
37
25
. write ( true )
38
- . truncate ( log_strategy == "truncate" )
39
- . append ( log_strategy == "append" )
26
+ . truncate ( logs_config . strategy == Truncate )
27
+ . append ( logs_config . strategy == Append )
40
28
. open ( log_file_path) ?;
41
29
42
30
let file = Arc :: new ( Mutex :: new ( file) ) ;
43
31
44
32
// Set the logger
45
33
log:: set_boxed_logger ( Box :: new ( Logger {
46
34
file : file. clone ( ) ,
47
- level : log_level,
35
+ level : logs_config. level . to_level_filter ( ) ,
36
+ enabled : logs_config. enabled ,
48
37
} ) ) ?;
49
- log:: set_max_level ( log_level ) ;
38
+ log:: set_max_level ( logs_config . level . to_level_filter ( ) ) ;
50
39
51
40
Ok ( ( ) )
52
41
}
53
42
54
43
struct Logger {
55
44
file : Arc < Mutex < File > > ,
56
45
level : LevelFilter ,
46
+ enabled : bool ,
57
47
}
58
48
59
49
impl Log for Logger {
@@ -82,29 +72,19 @@ impl Log for Logger {
82
72
record. args( )
83
73
) ;
84
74
85
- if self . level <= LevelFilter :: Debug
86
- && ( record. level ( ) == Level :: Info
87
- || record. level ( ) == Level :: Warn
88
- || record. level ( ) == Level :: Error )
89
- {
75
+ if self . enabled {
90
76
let mut file = self . file . lock ( ) . unwrap ( ) ;
91
77
writeln ! ( file, "{}" , log_line) . unwrap ( ) ;
92
78
}
93
79
94
80
match record. level ( ) {
95
- Level :: Trace | Level :: Debug => {
96
- let mut file = self . file . lock ( ) . unwrap ( ) ;
97
- writeln ! ( file, "{}" , log_line) . unwrap ( ) ;
98
- }
99
- Level :: Info => {
100
- println ! ( "{}" , record. args( ) ) ;
101
- }
102
- Level :: Warn => {
81
+ Level :: Info | Level :: Warn => {
103
82
println ! ( "{}" , record. args( ) ) ;
104
83
}
105
84
Level :: Error => {
106
85
eprintln ! ( "{}" , record. args( ) ) ;
107
86
}
87
+ _ => ( )
108
88
}
109
89
}
110
90
0 commit comments