Skip to content

Commit 5bee19e

Browse files
authored
[rust] Selenium Manager log level (#13566)
1 parent d3bba9e commit 5bee19e

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

rust/src/logger.rs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use crate::config::BooleanKey;
18+
use crate::config::{BooleanKey, StringKey};
1919
use crate::metadata::now_unix_timestamp;
2020
use env_logger::Target::Stdout;
2121
use env_logger::DEFAULT_FILTER_ENV;
22-
use log::Level;
2322
use log::LevelFilter::{Debug, Info, Trace};
23+
use log::{Level, LevelFilter};
2424
use serde::{Deserialize, Serialize};
2525
use std::cell::RefCell;
2626
use std::env;
2727
use std::fmt::Display;
2828
use std::ops::Deref;
29+
use std::str::FromStr;
2930

3031
pub const DRIVER_PATH: &str = "Driver path: ";
3132
pub 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)

rust/src/main.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ struct Cli {
122122
#[clap(long)]
123123
trace: bool,
124124

125+
/// Level for output messages. The possible values are: info, debug, trace, warn, error
126+
#[clap(long)]
127+
log_level: Option<String>,
128+
125129
/// Offline mode (i.e., disabling network requests and downloads)
126130
#[clap(long)]
127131
offline: bool,
@@ -151,7 +155,8 @@ fn main() {
151155

152156
let debug = cli.debug || BooleanKey("debug", false).get_value();
153157
let trace = cli.trace || BooleanKey("trace", false).get_value();
154-
let log = Logger::create(&cli.output, debug, trace);
158+
let log_level = StringKey(vec!["log-level"], &cli.log_level.unwrap_or_default()).get_value();
159+
let log = Logger::create(&cli.output, debug, trace, &log_level);
155160
let grid = cli.grid;
156161
let mut browser_name: String = cli.browser.unwrap_or_default();
157162
let mut driver_name: String = cli.driver.unwrap_or_default();

0 commit comments

Comments
 (0)