1515// specific language governing permissions and limitations
1616// under the License.
1717
18- use crate :: config:: BooleanKey ;
18+ use crate :: config:: { BooleanKey , StringKey } ;
1919use crate :: metadata:: now_unix_timestamp;
2020use env_logger:: Target :: Stdout ;
2121use env_logger:: DEFAULT_FILTER_ENV ;
22- use log:: Level ;
2322use log:: LevelFilter :: { Debug , Info , Trace } ;
23+ use log:: { Level , LevelFilter } ;
2424use serde:: { Deserialize , Serialize } ;
2525use std:: cell:: RefCell ;
2626use std:: env;
2727use std:: fmt:: Display ;
2828use std:: ops:: Deref ;
29+ use std:: str:: FromStr ;
2930
3031pub const DRIVER_PATH : & str = "Driver path: " ;
3132pub const BROWSER_PATH : & str = "Browser path: " ;
@@ -71,10 +72,11 @@ impl Logger {
7172 pub fn new ( ) -> Self {
7273 let debug = BooleanKey ( "debug" , false ) . get_value ( ) ;
7374 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)
7577 }
7678
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 {
7880 let output_type;
7981 if output. eq_ignore_ascii_case ( "json" ) {
8082 output_type = OutputType :: Json ;
@@ -86,13 +88,18 @@ impl Logger {
8688 match output_type {
8789 OutputType :: Logger => {
8890 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
92102 } ;
93- if trace {
94- filter = Trace
95- }
96103 env_logger:: Builder :: new ( )
97104 . filter_module ( env ! ( "CARGO_CRATE_NAME" ) , filter)
98105 . target ( Stdout )
0 commit comments