mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Allow console commands to appear in log files (#37631)
This enables console.* commands in javascript to be forwarded to the logger and not just stdout. The domain for this will be `script::dom::console` which seems appropate. Testing: Logs do not have any tests. Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This commit is contained in:
parent
5fdd8ee277
commit
208d4c620a
4 changed files with 30 additions and 14 deletions
|
@ -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<HandleValue>) {
|
||||
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<crate::DomTypeHolder> 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<crate::DomTypeHolder> 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<crate::DomTypeHolder> 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<crate::DomTypeHolder> 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<crate::DomTypeHolder> 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));
|
||||
}
|
||||
|
||||
/// <https://console.spec.whatwg.org/#countreset>
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -308,6 +308,21 @@ pub enum LogLevel {
|
|||
Trace,
|
||||
}
|
||||
|
||||
impl From<LogLevel> 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")]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue