From 2397511f054f711e456a0a6a5ce48a6a5faf4c09 Mon Sep 17 00:00:00 2001 From: Jakob Truelsen Date: Wed, 9 Jul 2025 14:54:17 +0200 Subject: [PATCH] sadmin service logs, handle none utf-8 log messages --- src/bin/sadmin/service_control.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/bin/sadmin/service_control.rs b/src/bin/sadmin/service_control.rs index 4e72385..355e63e 100644 --- a/src/bin/sadmin/service_control.rs +++ b/src/bin/sadmin/service_control.rs @@ -296,10 +296,17 @@ pub async fn run_exec(args: Exec) -> Result<()> { bail!("Unable to run command {}", status) } +#[derive(Serialize, Deserialize)] +#[serde(untagged)] +enum Message<'a> { + String(std::borrow::Cow<'a, str>), + Bytes(Vec), +} + #[derive(Deserialize)] #[serde(rename_all = "SCREAMING_SNAKE_CASE")] struct LogLine<'a> { - message: Option>, + message: Option>, instance: Option<&'a str>, __realtime_timestamp: Option<&'a str>, } @@ -370,7 +377,11 @@ pub async fn run_logs(args: Logs) -> Result<()> { }, None => 0, }; - let message = l.message.unwrap_or_default(); + let message = match &l.message { + Some(Message::Bytes(v)) => String::from_utf8_lossy(v), + Some(Message::String(v)) => v.as_ref().into(), + None => "".into(), + }; if print_date { println!( "{:02}/{:02} {:02}:{:02}:{:02}.{:03} {:2}: {}",