This is an automated email from the ASF dual-hosted git repository. kaxilnaik pushed a commit to branch v3-1-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 2f35605d942b80e737f23ebacc77eff71e8f706c Author: Ash Berlin-Taylor <[email protected]> AuthorDate: Wed Sep 10 23:00:25 2025 +0100 Make the "Toggle Source" log display only hide source fields, not all fields (#55474) (cherry picked from commit 224b50c411d63b3892887024c8dd0f2c02ba31e6) --- .../ui/src/components/renderStructuredLog.tsx | 25 ++++++++++++++-------- .../ui/src/pages/TaskInstance/Logs/Logs.test.tsx | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/airflow-core/src/airflow/ui/src/components/renderStructuredLog.tsx b/airflow-core/src/airflow/ui/src/components/renderStructuredLog.tsx index 2ad930cc9bb..f56c8072897 100644 --- a/airflow-core/src/airflow/ui/src/components/renderStructuredLog.tsx +++ b/airflow-core/src/airflow/ui/src/components/renderStructuredLog.tsx @@ -92,6 +92,8 @@ const addLinks = (line: string) => { return elements; }; +const sourceFields = ["logger", "chan"]; + export const renderStructuredLog = ({ index, logLevelFilters, @@ -182,16 +184,21 @@ export const renderStructuredLog = ({ </chakra.span>, ); - if (showSource) { - for (const key in reStructured) { - if (Object.hasOwn(reStructured, key)) { - elements.push( - ": ", - <chakra.span color={key === "logger" ? "fg.info" : undefined} key={`prop_${key}`}> - {key === "logger" ? "source" : key}={JSON.stringify(reStructured[key])} - </chakra.span>, - ); + for (const key in reStructured) { + if (Object.hasOwn(reStructured, key)) { + if (!showSource && sourceFields.includes(key)) { + continue; // eslint-disable-line no-continue } + const val = reStructured[key] as boolean | number | object | string | null; + + elements.push( + " ", + <chakra.span color="fg.info" key={`prop_${key}`}> + {key === "logger" ? "source" : key} + </chakra.span>, + // Let strings, ints, etc through as is, but JSON stringify anything more complex + `=${val instanceof Object ? JSON.stringify(val) : val}`, + ); } } diff --git a/airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/Logs.test.tsx b/airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/Logs.test.tsx index 4b608ca6bbb..b8c387485e2 100644 --- a/airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/Logs.test.tsx +++ b/airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/Logs.test.tsx @@ -64,7 +64,7 @@ describe("Task log grouping", () => { ); const summarySource = screen.getByTestId( - 'summary-Log message source details: sources=["/home/airflow/logs/dag_id=tutorial_dag/run_id=manual__2025-02-28T05:18:54.249762+00:00/task_id=load/attempt=1.log"]', + 'summary-Log message source details sources=["/home/airflow/logs/dag_id=tutorial_dag/run_id=manual__2025-02-28T05:18:54.249762+00:00/task_id=load/attempt=1.log"]', ); expect(summarySource).toBeVisible();
