bitwarden_wasm_internal/
init.rs1use tracing::Level;
2use tracing_subscriber::{EnvFilter, layer::SubscriberExt as _, util::SubscriberInitExt as _};
3use tracing_web::MakeWebConsoleWriter;
4use wasm_bindgen::prelude::*;
5
6#[wasm_bindgen]
7pub enum LogLevel {
8 Trace,
9 Debug,
10 Info,
11 Warn,
12 Error,
13}
14
15fn convert_level(level: LogLevel) -> Level {
16 match level {
17 LogLevel::Trace => Level::TRACE,
18 LogLevel::Debug => Level::DEBUG,
19 LogLevel::Info => Level::INFO,
20 LogLevel::Warn => Level::WARN,
21 LogLevel::Error => Level::ERROR,
22 }
23}
24
25#[allow(missing_docs)]
26#[wasm_bindgen]
27pub fn init_sdk(log_level: Option<LogLevel>) {
28 console_error_panic_hook::set_once();
29
30 let log_level = convert_level(log_level.unwrap_or(LogLevel::Info));
31
32 let filter = EnvFilter::builder()
33 .with_default_directive(log_level.into())
34 .from_env_lossy();
35
36 let fmt = tracing_subscriber::fmt::layer()
37 .with_ansi(false) .without_time() .with_writer(MakeWebConsoleWriter::new()); let tracing_subscriber = tracing_subscriber::registry().with(filter).with(fmt);
42 #[cfg(feature = "performance-tracing")]
43 let tracing_subscriber = {
44 let perf_layer = tracing_web::performance_layer()
45 .with_details_from_fields(tracing_subscriber::fmt::format::Pretty::default());
46 tracing_subscriber.with(perf_layer)
47 };
48 tracing_subscriber.init();
49
50 #[cfg(feature = "dangerous-crypto-debug")]
51 tracing::warn!(
52 "Dangerous crypto debug features are enabled. THIS MUST NOT BE USED IN PRODUCTION BUILDS!!"
53 );
54}