web: Switch from console_log to tracing-wasm
This commit is contained in:
parent
eec68365a6
commit
e2b9f6c1c4
|
@ -623,16 +623,6 @@ dependencies = [
|
|||
"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]]
|
||||
name = "convert_case"
|
||||
version = "0.6.0"
|
||||
|
@ -2347,7 +2337,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3601,11 +3590,9 @@ dependencies = [
|
|||
"base64 0.20.0",
|
||||
"chrono",
|
||||
"console_error_panic_hook",
|
||||
"console_log",
|
||||
"generational-arena",
|
||||
"getrandom",
|
||||
"js-sys",
|
||||
"log",
|
||||
"ruffle_core",
|
||||
"ruffle_render_canvas",
|
||||
"ruffle_render_webgl",
|
||||
|
@ -3616,6 +3603,8 @@ dependencies = [
|
|||
"serde-wasm-bindgen",
|
||||
"thiserror",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
"tracing-wasm",
|
||||
"url",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
|
@ -4447,6 +4436,17 @@ dependencies = [
|
|||
"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]]
|
||||
name = "transpose"
|
||||
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"]
|
||||
|
||||
[features]
|
||||
default = ["canvas", "console_error_panic_hook", "console_log", "webgl"]
|
||||
default = ["canvas", "console_error_panic_hook", "webgl"]
|
||||
|
||||
# core features
|
||||
avm_debug = ["ruffle_core/avm_debug"]
|
||||
|
@ -27,11 +27,11 @@ wgpu-webgl = ["ruffle_render_wgpu", "ruffle_render_wgpu/webgl"]
|
|||
|
||||
[dependencies]
|
||||
console_error_panic_hook = { version = "0.1.7", optional = true }
|
||||
console_log = { version = "0.2", optional = true }
|
||||
generational-arena = "0.2.8"
|
||||
js-sys = "0.3.60"
|
||||
log = { version = "0.4", features = ["serde"] }
|
||||
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_web_common = { path = "common" }
|
||||
ruffle_render_webgl = { path = "../render/webgl", optional = true }
|
||||
|
|
|
@ -19,10 +19,14 @@ use ruffle_video_software::backend::SoftwareVideoBackend;
|
|||
use ruffle_web_common::JsResult;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::collections::BTreeMap;
|
||||
use std::str::FromStr;
|
||||
use std::sync::Once;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::time::Duration;
|
||||
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 web_sys::{
|
||||
AddEventListenerOptions, Element, Event, EventTarget, HtmlCanvasElement, HtmlElement,
|
||||
|
@ -66,6 +70,7 @@ struct RuffleInstance {
|
|||
unload_callback: Option<Closure<dyn FnMut(Event)>>,
|
||||
has_focus: bool,
|
||||
trace_observer: Arc<RefCell<JsValue>>,
|
||||
log_subscriber: Arc<Layered<WASMLayer, Registry>>,
|
||||
}
|
||||
|
||||
#[wasm_bindgen]
|
||||
|
@ -115,7 +120,16 @@ struct JavascriptInterface {
|
|||
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 {
|
||||
#[serde(rename = "allowScriptAccess")]
|
||||
allow_script_access: bool,
|
||||
|
@ -145,8 +159,8 @@ struct Config {
|
|||
#[serde(rename = "warnOnUnsupportedContent")]
|
||||
warn_on_unsupported_content: bool,
|
||||
|
||||
#[serde(rename = "logLevel")]
|
||||
log_level: log::Level,
|
||||
#[serde(rename = "logLevel", deserialize_with = "deserialize_log_level")]
|
||||
log_level: tracing::Level,
|
||||
|
||||
#[serde(rename = "maxExecutionDuration")]
|
||||
max_execution_duration: Duration,
|
||||
|
@ -454,7 +468,14 @@ impl Ruffle {
|
|||
js_player: JavascriptPlayer,
|
||||
config: Config,
|
||||
) -> 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 window = web_sys::window().ok_or("Expected window")?;
|
||||
|
@ -540,6 +561,7 @@ impl Ruffle {
|
|||
timestamp: None,
|
||||
has_focus: false,
|
||||
trace_observer,
|
||||
log_subscriber,
|
||||
};
|
||||
|
||||
// Prevent touch-scrolling on canvas.
|
||||
|
@ -822,6 +844,8 @@ impl Ruffle {
|
|||
let instances = instances.try_borrow()?;
|
||||
if let Some(instance) = instances.get(self.0) {
|
||||
let instance = instance.try_borrow()?;
|
||||
let _subscriber =
|
||||
tracing::subscriber::set_default(instance.log_subscriber.clone());
|
||||
Ok(f(&instance))
|
||||
} else {
|
||||
Err(RuffleInstanceError::InstanceNotFound)
|
||||
|
@ -845,6 +869,8 @@ impl Ruffle {
|
|||
let instances = instances.try_borrow()?;
|
||||
if let Some(instance) = instances.get(self.0) {
|
||||
let mut instance = instance.try_borrow_mut()?;
|
||||
let _subscriber =
|
||||
tracing::subscriber::set_default(instance.log_subscriber.clone());
|
||||
Ok(f(&mut instance))
|
||||
} else {
|
||||
Err(RuffleInstanceError::InstanceNotFound)
|
||||
|
@ -868,6 +894,8 @@ impl Ruffle {
|
|||
let instances = instances.try_borrow()?;
|
||||
if let Some(instance) = instances.get(self.0) {
|
||||
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.
|
||||
let core = instance.core.clone();
|
||||
drop(instance);
|
||||
|
@ -897,6 +925,8 @@ impl Ruffle {
|
|||
let instances = instances.try_borrow()?;
|
||||
if let Some(instance) = instances.get(self.0) {
|
||||
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.
|
||||
let core = instance.core.clone();
|
||||
drop(instance);
|
||||
|
|
Loading…
Reference in New Issue