mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Allow setting Visual Studio logger level from cli arg
This commit is contained in:
parent
0c20fba2ab
commit
e1b6719384
3 changed files with 31 additions and 18 deletions
|
@ -728,6 +728,7 @@ pub fn from_cmdline_args(mut opts: Options, args: &[String]) -> ArgumentParsingR
|
|||
opts.optopt("", "profiler-db-pass", "Profiler database password", "");
|
||||
opts.optopt("", "profiler-db-name", "Profiler database name", "");
|
||||
opts.optflag("", "print-pwm", "Print Progressive Web Metrics");
|
||||
opts.optopt("", "vslogger-level", "Visual Studio logger level", "Warn");
|
||||
|
||||
let opt_match = match opts.parse(args) {
|
||||
Ok(m) => m,
|
||||
|
|
|
@ -14,6 +14,7 @@ mod vslogger;
|
|||
use backtrace::Backtrace;
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
use env_logger;
|
||||
use log::LevelFilter;
|
||||
use simpleservo::{self, gl_glue, ServoGlue, SERVO};
|
||||
use simpleservo::{Coordinates, EventLoopWaker, HostTrait, InitOptions, VRInitOptions};
|
||||
use std::ffi::{CStr, CString};
|
||||
|
@ -22,6 +23,7 @@ use std::mem;
|
|||
use std::os::raw::{c_char, c_void};
|
||||
use std::panic::{self, UnwindSafe};
|
||||
use std::slice;
|
||||
use std::str::FromStr;
|
||||
use std::sync::RwLock;
|
||||
|
||||
extern "C" fn default_panic_handler(msg: *const c_char) {
|
||||
|
@ -234,9 +236,8 @@ pub extern "C" fn servo_version() -> *const c_char {
|
|||
}
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
fn init_logger(modules: &[*const c_char]) {
|
||||
fn init_logger(modules: &[*const c_char], level: LevelFilter) {
|
||||
use crate::vslogger::LOG_MODULE_FILTERS;
|
||||
use log::LevelFilter;
|
||||
use std::sync::Once;
|
||||
use vslogger::VSLogger;
|
||||
|
||||
|
@ -252,13 +253,13 @@ fn init_logger(modules: &[*const c_char]) {
|
|||
|
||||
LOGGER_INIT.call_once(|| {
|
||||
log::set_logger(&LOGGER)
|
||||
.map(|_| log::set_max_level(LevelFilter::Debug))
|
||||
.map(|_| log::set_max_level(level))
|
||||
.unwrap();
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
fn init_logger(_modules: &[*const c_char]) {
|
||||
fn init_logger(_modules: &[*const c_char], _level: LevelFilter) {
|
||||
crate::env_logger::init();
|
||||
}
|
||||
|
||||
|
@ -270,18 +271,6 @@ unsafe fn init(
|
|||
wakeup: extern "C" fn(),
|
||||
callbacks: CHostCallbacks,
|
||||
) {
|
||||
let logger_modules = if opts.vslogger_mod_list.is_null() {
|
||||
&[]
|
||||
} else {
|
||||
slice::from_raw_parts(opts.vslogger_mod_list, opts.vslogger_mod_size as usize)
|
||||
};
|
||||
|
||||
init_logger(logger_modules);
|
||||
|
||||
if let Err(reason) = redirect_stdout_stderr() {
|
||||
warn!("Error redirecting stdout/stderr: {}", reason);
|
||||
}
|
||||
|
||||
let args = if !opts.args.is_null() {
|
||||
let args = CStr::from_ptr(opts.args);
|
||||
args.to_str()
|
||||
|
@ -293,6 +282,29 @@ unsafe fn init(
|
|||
vec![]
|
||||
};
|
||||
|
||||
let logger_level = if let Some(level_index) = args.iter().position(|s| s == "--vslogger-level")
|
||||
{
|
||||
if args.len() >= level_index + 1 {
|
||||
LevelFilter::from_str(&args[level_index + 1]).unwrap_or(LevelFilter::Warn)
|
||||
} else {
|
||||
LevelFilter::Warn
|
||||
}
|
||||
} else {
|
||||
LevelFilter::Warn
|
||||
};
|
||||
|
||||
let logger_modules = if opts.vslogger_mod_list.is_null() {
|
||||
&[]
|
||||
} else {
|
||||
slice::from_raw_parts(opts.vslogger_mod_list, opts.vslogger_mod_size as usize)
|
||||
};
|
||||
|
||||
init_logger(logger_modules, logger_level);
|
||||
|
||||
if let Err(reason) = redirect_stdout_stderr() {
|
||||
warn!("Error redirecting stdout/stderr: {}", reason);
|
||||
}
|
||||
|
||||
let url = CStr::from_ptr(opts.url);
|
||||
let url = url.to_str().map(|s| s.to_string()).ok();
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use log::{self, Level, Metadata, Record};
|
||||
use log::{self, Metadata, Record};
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
lazy_static! {
|
||||
|
@ -20,7 +20,7 @@ impl log::Log for VSLogger {
|
|||
let modules = LOG_MODULE_FILTERS.lock().unwrap();
|
||||
let is_module_enabled =
|
||||
modules.contains(&String::from(metadata.target())) || modules.is_empty();
|
||||
return metadata.level() <= Level::Warn && is_module_enabled;
|
||||
return is_module_enabled;
|
||||
}
|
||||
|
||||
fn log(&self, record: &Record) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue