From f93b64be0d259f9a406593e2fc8bb2a4db40ad76 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Mon, 9 Sep 2024 10:26:17 +0200 Subject: [PATCH] put sed helpers to remove anscii codes in downloaded logs --- backend/windmill-api/src/jobs.rs | 18 ++ frontend/src/lib/components/LogViewer.svelte | 208 +++++++++++++++++++ 2 files changed, 226 insertions(+) diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs index 346853b101..a80a225581 100644 --- a/backend/windmill-api/src/jobs.rs +++ b/backend/windmill-api/src/jobs.rs @@ -792,6 +792,11 @@ async fn get_logs_from_store( let logs = logs.to_string(); let stream = async_stream::stream! { + yield Ok(bytes::Bytes::from( + r#"to remove ansi colors, use: | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' + "# + .to_string(), + )); for file_p in file_index.clone() { let file_p_2 = file_p.clone(); let file = os.get(&object_store::path::Path::from(file_p)).await; @@ -833,6 +838,10 @@ async fn get_logs_from_disk( let logs = logs.to_string(); let stream = async_stream::stream! { + yield Ok(bytes::Bytes::from( + r#"to remove ansi colors, use: | sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g' + "#.to_string(), + )); for file_p in file_index.clone() { let mut file = tokio::fs::File::open(format!("{TMP_DIR}/{file_p}")).await.map_err(to_anyhow)?; let mut buffer = Vec::new(); @@ -892,6 +901,10 @@ async fn get_job_logs( { return r.map(content_plain); } + let logs = format!( + "to remove ansi colors, use: | sed 's/\\x1B\\[[0-9;]\\{{1,\\}}[A-Za-z]//g'\n{}", + logs + ); Ok(content_plain(Body::from(logs))) } else { let text = sqlx::query!( @@ -922,6 +935,11 @@ async fn get_job_logs( if let Some(r) = get_logs_from_disk(text.log_offset, &logs, &text.log_file_index).await { return r.map(content_plain); } + + let logs = format!( + "to remove ansi colors, use: | sed 's/\\x1B\\[[0-9;]\\{{1,\\}}[A-Za-z]//g'\n{}", + logs + ); Ok(content_plain(Body::from(logs))) } } diff --git a/frontend/src/lib/components/LogViewer.svelte b/frontend/src/lib/components/LogViewer.svelte index 4cff07768c..9f6ce7eecc 100644 --- a/frontend/src/lib/components/LogViewer.svelte +++ b/frontend/src/lib/components/LogViewer.svelte @@ -32,6 +32,8 @@ // @ts-ignore const ansi_up = new AnsiUp() + ansi_up.use_classes = true + let scroll = true let div: HTMLElement | null = null @@ -254,3 +256,209 @@ > + +