15
15
// specific language governing permissions and limitations
16
16
// under the License.
17
17
18
- use crate :: config:: BooleanKey ;
18
+ use crate :: config:: { BooleanKey , StringKey } ;
19
19
use crate :: metadata:: now_unix_timestamp;
20
20
use env_logger:: Target :: Stdout ;
21
21
use env_logger:: DEFAULT_FILTER_ENV ;
22
- use log:: Level ;
23
22
use log:: LevelFilter :: { Debug , Info , Trace } ;
23
+ use log:: { Level , LevelFilter } ;
24
24
use serde:: { Deserialize , Serialize } ;
25
25
use std:: cell:: RefCell ;
26
26
use std:: env;
27
27
use std:: fmt:: Display ;
28
28
use std:: ops:: Deref ;
29
+ use std:: str:: FromStr ;
29
30
30
31
pub const DRIVER_PATH : & str = "Driver path: " ;
31
32
pub const BROWSER_PATH : & str = "Browser path: " ;
@@ -71,10 +72,11 @@ impl Logger {
71
72
pub fn new ( ) -> Self {
72
73
let debug = BooleanKey ( "debug" , false ) . get_value ( ) ;
73
74
let trace = BooleanKey ( "trace" , false ) . get_value ( ) ;
74
- Logger :: create ( "" , debug, trace)
75
+ let log_level = StringKey ( vec ! [ "log-level" ] , "" ) . get_value ( ) ;
76
+ Logger :: create ( "" , debug, trace, & log_level)
75
77
}
76
78
77
- pub fn create ( output : & str , debug : bool , trace : bool ) -> Self {
79
+ pub fn create ( output : & str , debug : bool , trace : bool , log_level : & str ) -> Self {
78
80
let output_type;
79
81
if output. eq_ignore_ascii_case ( "json" ) {
80
82
output_type = OutputType :: Json ;
@@ -86,13 +88,18 @@ impl Logger {
86
88
match output_type {
87
89
OutputType :: Logger => {
88
90
if env:: var ( DEFAULT_FILTER_ENV ) . unwrap_or_default ( ) . is_empty ( ) {
89
- let mut filter = match debug {
90
- true => Debug ,
91
- false => Info ,
91
+ let filter = if !log_level. is_empty ( ) {
92
+ LevelFilter :: from_str ( log_level) . unwrap_or ( Info )
93
+ } else {
94
+ let mut filter = match debug {
95
+ true => Debug ,
96
+ false => Info ,
97
+ } ;
98
+ if trace {
99
+ filter = Trace ;
100
+ }
101
+ filter
92
102
} ;
93
- if trace {
94
- filter = Trace
95
- }
96
103
env_logger:: Builder :: new ( )
97
104
. filter_module ( env ! ( "CARGO_CRATE_NAME" ) , filter)
98
105
. target ( Stdout )
0 commit comments