web: Switch from console_log to tracing-wasm
This commit is contained in:
parent
eec68365a6
commit
e2b9f6c1c4
|
@ -623,16 +623,6 @@ dependencies = [
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "console_log"
|
|
||||||
version = "0.2.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "501a375961cef1a0d44767200e66e4a559283097e91d0730b1d75dfb2f8a1494"
|
|
||||||
dependencies = [
|
|
||||||
"log",
|
|
||||||
"web-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "convert_case"
|
name = "convert_case"
|
||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
|
@ -2347,7 +2337,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if 1.0.0",
|
"cfg-if 1.0.0",
|
||||||
"serde",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3601,11 +3590,9 @@ dependencies = [
|
||||||
"base64 0.20.0",
|
"base64 0.20.0",
|
||||||
"chrono",
|
"chrono",
|
||||||
"console_error_panic_hook",
|
"console_error_panic_hook",
|
||||||
"console_log",
|
|
||||||
"generational-arena",
|
"generational-arena",
|
||||||
"getrandom",
|
"getrandom",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"log",
|
|
||||||
"ruffle_core",
|
"ruffle_core",
|
||||||
"ruffle_render_canvas",
|
"ruffle_render_canvas",
|
||||||
"ruffle_render_webgl",
|
"ruffle_render_webgl",
|
||||||
|
@ -3616,6 +3603,8 @@ dependencies = [
|
||||||
"serde-wasm-bindgen",
|
"serde-wasm-bindgen",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
"tracing-subscriber",
|
||||||
|
"tracing-wasm",
|
||||||
"url",
|
"url",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
"wasm-bindgen-futures",
|
"wasm-bindgen-futures",
|
||||||
|
@ -4447,6 +4436,17 @@ dependencies = [
|
||||||
"tracing-log",
|
"tracing-log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-wasm"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07"
|
||||||
|
dependencies = [
|
||||||
|
"tracing",
|
||||||
|
"tracing-subscriber",
|
||||||
|
"wasm-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "transpose"
|
name = "transpose"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
|
|
@ -13,7 +13,7 @@ publish = false # This crate is useless alone, people should use the npm package
|
||||||
crate-type = ["cdylib", "rlib"]
|
crate-type = ["cdylib", "rlib"]
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["canvas", "console_error_panic_hook", "console_log", "webgl"]
|
default = ["canvas", "console_error_panic_hook", "webgl"]
|
||||||
|
|
||||||
# core features
|
# core features
|
||||||
avm_debug = ["ruffle_core/avm_debug"]
|
avm_debug = ["ruffle_core/avm_debug"]
|
||||||
|
@ -27,11 +27,11 @@ wgpu-webgl = ["ruffle_render_wgpu", "ruffle_render_wgpu/webgl"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
console_error_panic_hook = { version = "0.1.7", optional = true }
|
console_error_panic_hook = { version = "0.1.7", optional = true }
|
||||||
console_log = { version = "0.2", optional = true }
|
|
||||||
generational-arena = "0.2.8"
|
generational-arena = "0.2.8"
|
||||||
js-sys = "0.3.60"
|
js-sys = "0.3.60"
|
||||||
log = { version = "0.4", features = ["serde"] }
|
|
||||||
tracing = { version = "0.1.37", features = ["log"] }
|
tracing = { version = "0.1.37", features = ["log"] }
|
||||||
|
tracing-subscriber = { version = "0.3.16", default-features = false, features = ["registry"] }
|
||||||
|
tracing-wasm = "0.2.1"
|
||||||
ruffle_render_canvas = { path = "../render/canvas", optional = true }
|
ruffle_render_canvas = { path = "../render/canvas", optional = true }
|
||||||
ruffle_web_common = { path = "common" }
|
ruffle_web_common = { path = "common" }
|
||||||
ruffle_render_webgl = { path = "../render/webgl", optional = true }
|
ruffle_render_webgl = { path = "../render/webgl", optional = true }
|
||||||
|
|
|
@ -19,10 +19,14 @@ use ruffle_video_software::backend::SoftwareVideoBackend;
|
||||||
use ruffle_web_common::JsResult;
|
use ruffle_web_common::JsResult;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
use std::str::FromStr;
|
||||||
use std::sync::Once;
|
use std::sync::Once;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use std::{cell::RefCell, error::Error, num::NonZeroI32};
|
use std::{cell::RefCell, error::Error, num::NonZeroI32};
|
||||||
|
use tracing_subscriber::layer::{Layered, SubscriberExt};
|
||||||
|
use tracing_subscriber::registry::Registry;
|
||||||
|
use tracing_wasm::{WASMLayer, WASMLayerConfigBuilder};
|
||||||
use wasm_bindgen::{prelude::*, JsCast, JsValue};
|
use wasm_bindgen::{prelude::*, JsCast, JsValue};
|
||||||
use web_sys::{
|
use web_sys::{
|
||||||
AddEventListenerOptions, Element, Event, EventTarget, HtmlCanvasElement, HtmlElement,
|
AddEventListenerOptions, Element, Event, EventTarget, HtmlCanvasElement, HtmlElement,
|
||||||
|
@ -66,6 +70,7 @@ struct RuffleInstance {
|
||||||
unload_callback: Option<Closure<dyn FnMut(Event)>>,
|
unload_callback: Option<Closure<dyn FnMut(Event)>>,
|
||||||
has_focus: bool,
|
has_focus: bool,
|
||||||
trace_observer: Arc<RefCell<JsValue>>,
|
trace_observer: Arc<RefCell<JsValue>>,
|
||||||
|
log_subscriber: Arc<Layered<WASMLayer, Registry>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
|
@ -115,7 +120,16 @@ struct JavascriptInterface {
|
||||||
js_player: JavascriptPlayer,
|
js_player: JavascriptPlayer,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
fn deserialize_log_level<'de, D>(deserializer: D) -> Result<tracing::Level, D::Error>
|
||||||
|
where
|
||||||
|
D: serde::Deserializer<'de>,
|
||||||
|
{
|
||||||
|
use serde::de::Error;
|
||||||
|
let value: String = serde::Deserialize::deserialize(deserializer)?;
|
||||||
|
tracing::Level::from_str(&value).map_err(D::Error::custom)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
struct Config {
|
struct Config {
|
||||||
#[serde(rename = "allowScriptAccess")]
|
#[serde(rename = "allowScriptAccess")]
|
||||||
allow_script_access: bool,
|
allow_script_access: bool,
|
||||||
|
@ -145,8 +159,8 @@ struct Config {
|
||||||
#[serde(rename = "warnOnUnsupportedContent")]
|
#[serde(rename = "warnOnUnsupportedContent")]
|
||||||
warn_on_unsupported_content: bool,
|
warn_on_unsupported_content: bool,
|
||||||
|
|
||||||
#[serde(rename = "logLevel")]
|
#[serde(rename = "logLevel", deserialize_with = "deserialize_log_level")]
|
||||||
log_level: log::Level,
|
log_level: tracing::Level,
|
||||||
|
|
||||||
#[serde(rename = "maxExecutionDuration")]
|
#[serde(rename = "maxExecutionDuration")]
|
||||||
max_execution_duration: Duration,
|
max_execution_duration: Duration,
|
||||||
|
@ -454,7 +468,14 @@ impl Ruffle {
|
||||||
js_player: JavascriptPlayer,
|
js_player: JavascriptPlayer,
|
||||||
config: Config,
|
config: Config,
|
||||||
) -> Result<Ruffle, Box<dyn Error>> {
|
) -> Result<Ruffle, Box<dyn Error>> {
|
||||||
let _ = console_log::init_with_level(config.log_level);
|
let log_subscriber = Arc::new(
|
||||||
|
Registry::default().with(WASMLayer::new(
|
||||||
|
WASMLayerConfigBuilder::new()
|
||||||
|
.set_max_level(config.log_level)
|
||||||
|
.build(),
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
let _subscriber = tracing::subscriber::set_default(log_subscriber.clone());
|
||||||
let allow_script_access = config.allow_script_access;
|
let allow_script_access = config.allow_script_access;
|
||||||
|
|
||||||
let window = web_sys::window().ok_or("Expected window")?;
|
let window = web_sys::window().ok_or("Expected window")?;
|
||||||
|
@ -540,6 +561,7 @@ impl Ruffle {
|
||||||
timestamp: None,
|
timestamp: None,
|
||||||
has_focus: false,
|
has_focus: false,
|
||||||
trace_observer,
|
trace_observer,
|
||||||
|
log_subscriber,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Prevent touch-scrolling on canvas.
|
// Prevent touch-scrolling on canvas.
|
||||||
|
@ -822,6 +844,8 @@ impl Ruffle {
|
||||||
let instances = instances.try_borrow()?;
|
let instances = instances.try_borrow()?;
|
||||||
if let Some(instance) = instances.get(self.0) {
|
if let Some(instance) = instances.get(self.0) {
|
||||||
let instance = instance.try_borrow()?;
|
let instance = instance.try_borrow()?;
|
||||||
|
let _subscriber =
|
||||||
|
tracing::subscriber::set_default(instance.log_subscriber.clone());
|
||||||
Ok(f(&instance))
|
Ok(f(&instance))
|
||||||
} else {
|
} else {
|
||||||
Err(RuffleInstanceError::InstanceNotFound)
|
Err(RuffleInstanceError::InstanceNotFound)
|
||||||
|
@ -845,6 +869,8 @@ impl Ruffle {
|
||||||
let instances = instances.try_borrow()?;
|
let instances = instances.try_borrow()?;
|
||||||
if let Some(instance) = instances.get(self.0) {
|
if let Some(instance) = instances.get(self.0) {
|
||||||
let mut instance = instance.try_borrow_mut()?;
|
let mut instance = instance.try_borrow_mut()?;
|
||||||
|
let _subscriber =
|
||||||
|
tracing::subscriber::set_default(instance.log_subscriber.clone());
|
||||||
Ok(f(&mut instance))
|
Ok(f(&mut instance))
|
||||||
} else {
|
} else {
|
||||||
Err(RuffleInstanceError::InstanceNotFound)
|
Err(RuffleInstanceError::InstanceNotFound)
|
||||||
|
@ -868,6 +894,8 @@ impl Ruffle {
|
||||||
let instances = instances.try_borrow()?;
|
let instances = instances.try_borrow()?;
|
||||||
if let Some(instance) = instances.get(self.0) {
|
if let Some(instance) = instances.get(self.0) {
|
||||||
let instance = instance.try_borrow()?;
|
let instance = instance.try_borrow()?;
|
||||||
|
let _subscriber =
|
||||||
|
tracing::subscriber::set_default(instance.log_subscriber.clone());
|
||||||
// This clone lets us drop the instance borrow to avoid potential double-borrows.
|
// This clone lets us drop the instance borrow to avoid potential double-borrows.
|
||||||
let core = instance.core.clone();
|
let core = instance.core.clone();
|
||||||
drop(instance);
|
drop(instance);
|
||||||
|
@ -897,6 +925,8 @@ impl Ruffle {
|
||||||
let instances = instances.try_borrow()?;
|
let instances = instances.try_borrow()?;
|
||||||
if let Some(instance) = instances.get(self.0) {
|
if let Some(instance) = instances.get(self.0) {
|
||||||
let instance = instance.try_borrow()?;
|
let instance = instance.try_borrow()?;
|
||||||
|
let _subscriber =
|
||||||
|
tracing::subscriber::set_default(instance.log_subscriber.clone());
|
||||||
// This clone lets us drop the instance to avoid potential double-borrows.
|
// This clone lets us drop the instance to avoid potential double-borrows.
|
||||||
let core = instance.core.clone();
|
let core = instance.core.clone();
|
||||||
drop(instance);
|
drop(instance);
|
||||||
|
|
Loading…
Reference in New Issue