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