From 89dbc89225b44a9d0bec62d95c0e74011cc2ac6d Mon Sep 17 00:00:00 2001 From: alemi Date: Sun, 1 Sep 2024 03:10:40 +0200 Subject: [PATCH] feat(lua): allow printing tracing on stderr for detached sessions --- src/ffi/lua.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/ffi/lua.rs b/src/ffi/lua.rs index 13bfed6..7bccb67 100644 --- a/src/ffi/lua.rs +++ b/src/ffi/lua.rs @@ -381,8 +381,7 @@ impl Write for LuaLoggerProducer { fn logger(_: &Lua, (printer, debug): (LuaValue, Option)) -> LuaResult { let level = if debug.unwrap_or_default() { tracing::Level::DEBUG } else {tracing::Level::INFO }; let success = match printer { - LuaNil - | LuaValue::Boolean(_) + LuaValue::Boolean(_) | LuaValue::LightUserData(_) | LuaValue::Integer(_) | LuaValue::Number(_) @@ -390,6 +389,23 @@ fn logger(_: &Lua, (printer, debug): (LuaValue, Option)) -> LuaResult return Err(LuaError::BindError), // TODO full BadArgument type?? + LuaValue::Nil => { + let format = tracing_subscriber::fmt::format() + .with_level(true) + .with_target(true) + .with_thread_ids(true) + .with_thread_names(true) + .with_ansi(true) + .with_file(false) + .with_line_number(false) + .with_source_location(false); + tracing_subscriber::fmt() + .event_format(format) + .with_max_level(level) + .with_writer(std::sync::Mutex::new(std::io::stderr())) + .try_init() + .is_ok() + }, LuaValue::String(path) => { let logfile = std::fs::File::create(path.to_string_lossy()).map_err(|e| LuaError::RuntimeError(e.to_string()))?; let format = tracing_subscriber::fmt::format()