diff --git a/Cargo.lock b/Cargo.lock index aa0396c0eb7..aba47c3ca24 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1647,6 +1647,7 @@ dependencies = [ "embedder_traits", "http 1.3.1", "ipc-channel", + "log", "malloc_size_of_derive", "net_traits", "serde", diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index 91ef05a00c5..8d8df9197b4 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -64,7 +64,7 @@ impl Console { ) { let cx = GlobalScope::get_cx(); - let mut log: ConsoleMessageBuilder = Console::build_message(level); + let mut log: ConsoleMessageBuilder = Console::build_message(level.clone()); for message in &messages { log.add_argument(console_argument_from_handle_value(cx, *message)); } @@ -75,8 +75,12 @@ impl Console { Console::send_to_devtools(global, log.finish()); + let msgs = stringify_handle_values(&messages); // Also log messages to stdout - console_messages(global, messages) + console_message(global, &msgs); + + // Also output to the logger which will be at script::dom::console + log!(level.into(), "{}", &msgs); } fn send_to_devtools(global: &GlobalScope, message: ConsoleMessage) { @@ -93,7 +97,7 @@ impl Console { // Directly logs a DOMString, without processing the message pub(crate) fn internal_warn(global: &GlobalScope, message: DOMString) { Console::send_string_message(global, LogLevel::Warn, String::from(message.clone())); - console_message(global, message); + console_message(global, &message); } } @@ -330,12 +334,7 @@ fn stringify_handle_values(messages: &[HandleValue]) -> DOMString { )) } -fn console_messages(global: &GlobalScope, messages: Vec) { - let message = stringify_handle_values(&messages); - console_message(global, message) -} - -fn console_message(global: &GlobalScope, message: DOMString) { +fn console_message(global: &GlobalScope, message: &DOMString) { with_stderr_lock(move || { let prefix = global.current_group_label().unwrap_or_default(); let message = format!("{}{}", prefix, message); @@ -392,7 +391,7 @@ impl consoleMethods for Console { let message = format!("Assertion failed: {}", stringify_handle_values(&messages)); Console::send_string_message(global, LogLevel::Log, message.clone()); - console_message(global, DOMString::from(message)); + console_message(global, &DOMString::from(message)); } } @@ -401,7 +400,7 @@ impl consoleMethods for Console { if let Ok(()) = global.time(label.clone()) { let message = format!("{label}: timer started"); Console::send_string_message(global, LogLevel::Log, message.clone()); - console_message(global, DOMString::from(message)); + console_message(global, &DOMString::from(message)); } } @@ -411,7 +410,7 @@ impl consoleMethods for Console { let message = format!("{label}: {delta}ms {}", stringify_handle_values(&data)); Console::send_string_message(global, LogLevel::Log, message.clone()); - console_message(global, DOMString::from(message)); + console_message(global, &DOMString::from(message)); } } @@ -421,7 +420,7 @@ impl consoleMethods for Console { let message = format!("{label}: {delta}ms"); Console::send_string_message(global, LogLevel::Log, message.clone()); - console_message(global, DOMString::from(message)); + console_message(global, &DOMString::from(message)); } } @@ -446,7 +445,7 @@ impl consoleMethods for Console { let message = format!("{label}: {count}"); Console::send_string_message(global, LogLevel::Log, message.clone()); - console_message(global, DOMString::from(message)); + console_message(global, &DOMString::from(message)); } /// diff --git a/components/shared/devtools/Cargo.toml b/components/shared/devtools/Cargo.toml index e81e0709a00..b6d2ff3f831 100644 --- a/components/shared/devtools/Cargo.toml +++ b/components/shared/devtools/Cargo.toml @@ -14,6 +14,7 @@ path = "lib.rs" [dependencies] base = { workspace = true } bitflags = { workspace = true } +log = { workspace = true } http = { workspace = true } ipc-channel = { workspace = true } malloc_size_of = { workspace = true } diff --git a/components/shared/devtools/lib.rs b/components/shared/devtools/lib.rs index 3bce57d61fc..e40983f3975 100644 --- a/components/shared/devtools/lib.rs +++ b/components/shared/devtools/lib.rs @@ -308,6 +308,21 @@ pub enum LogLevel { Trace, } +impl From for log::Level { + fn from(value: LogLevel) -> Self { + match value { + LogLevel::Log => log::Level::Info, + LogLevel::Clear => log::Level::Info, + + LogLevel::Debug => log::Level::Debug, + LogLevel::Info => log::Level::Info, + LogLevel::Warn => log::Level::Warn, + LogLevel::Error => log::Level::Error, + LogLevel::Trace => log::Level::Trace, + } + } +} + /// A console message as it is sent from script to the constellation #[derive(Clone, Debug, Deserialize, Serialize)] #[serde(rename_all = "camelCase")]