diff --git a/ext/event_worker/events.rs b/ext/event_worker/events.rs index 70a5c25b2..b6f3e6b99 100644 --- a/ext/event_worker/events.rs +++ b/ext/event_worker/events.rs @@ -1,3 +1,5 @@ +use std::convert::Infallible; + use base_mem_check::MemCheckState; use enum_as_inner::EnumAsInner; use serde::Deserialize; @@ -50,14 +52,30 @@ pub struct LogEvent { pub level: LogLevel, } -#[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Debug, Default, PartialEq, Eq)] +#[repr(u8)] pub enum LogLevel { + #[default] Debug, Info, Warning, Error, } +impl TryFrom for LogLevel { + type Error = Infallible; + + fn try_from(value: u8) -> Result { + match value { + 0 => Ok(Self::Debug), + 1 => Ok(Self::Info), + 2 => Ok(Self::Warning), + 3 => Ok(Self::Error), + _ => Ok(Self::Debug), + } + } +} + #[derive(Serialize, Deserialize, Debug, EnumAsInner)] pub enum WorkerEvents { Boot(BootEvent), diff --git a/ext/event_worker/js_interceptors.rs b/ext/event_worker/js_interceptors.rs index 9a967a06c..bdc66b3d6 100644 --- a/ext/event_worker/js_interceptors.rs +++ b/ext/event_worker/js_interceptors.rs @@ -12,14 +12,11 @@ use tokio::sync::mpsc; fn op_user_worker_log( state: &mut OpState, #[string] msg: &str, - is_err: bool, + #[smi] level: i32, ) -> Result<(), AnyError> { let maybe_tx = state.try_borrow::>(); - let mut level = LogLevel::Info; - if is_err { - level = LogLevel::Error; - } + let level = LogLevel::try_from(level as u8).unwrap_or_default(); if let Some(tx) = maybe_tx { let event_metadata = state diff --git a/ext/runtime/js/bootstrap.js b/ext/runtime/js/bootstrap.js index 5dc96bc3d..398854105 100644 --- a/ext/runtime/js/bootstrap.js +++ b/ext/runtime/js/bootstrap.js @@ -595,7 +595,7 @@ globalThis.bootstrapSBEdge = (opts, ctx) => { ObjectDefineProperties(globalThis, { console: nonEnumerable( new console.Console((msg, level) => { - return ops.op_user_worker_log(msg, level > 1); + return ops.op_user_worker_log(msg, level); }), ), });