From 19610fbe6713760161e96556e14e2a5856586578 Mon Sep 17 00:00:00 2001 From: flakey5 <73616808+flakey5@users.noreply.github.com> Date: Sun, 5 Oct 2025 19:03:42 -0700 Subject: [PATCH 1/2] src: log error stack trace if provided Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> --- src/logger/logger.mjs | 8 +++++++- src/logger/transports/console.mjs | 6 +++++- src/logger/types.d.ts | 2 ++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/logger/logger.mjs b/src/logger/logger.mjs index 2277f4f7..0723a2c7 100644 --- a/src/logger/logger.mjs +++ b/src/logger/logger.mjs @@ -40,7 +40,13 @@ export const createLogger = ( const timestamp = Date.now(); // Extract message string from Error object or use message as-is - const msg = message instanceof Error ? message.message : message; + let msg; + if (message instanceof Error) { + msg = message.message; + metadata.stack = message.stack; + } else { + msg = message; + } transport({ level, diff --git a/src/logger/transports/console.mjs b/src/logger/transports/console.mjs index 325b2a3c..3dfb7e19 100644 --- a/src/logger/transports/console.mjs +++ b/src/logger/transports/console.mjs @@ -10,7 +10,7 @@ import { prettifyTimestamp } from '../utils/time.mjs'; * @returns {void} */ const console = ({ level, message, timestamp, metadata = {}, module }) => { - const { file } = metadata; + const { file, stack } = metadata; const time = prettifyTimestamp(timestamp); @@ -37,6 +37,10 @@ const console = ({ level, message, timestamp, metadata = {}, module }) => { } process.stdout.write('\n'); + + if (stack) { + process.stdout.write(stack); + } }; export default console; diff --git a/src/logger/types.d.ts b/src/logger/types.d.ts index 3e7fc9c1..32a7a579 100644 --- a/src/logger/types.d.ts +++ b/src/logger/types.d.ts @@ -14,6 +14,8 @@ export interface File { interface Metadata { file?: File; + // Stack trace if the message is an error + stack?: string; } interface TransportContext { From b58a15ef61c27a4cdb87a159311befb3da03e484 Mon Sep 17 00:00:00 2001 From: flakey5 <73616808+flakey5@users.noreply.github.com> Date: Sat, 11 Oct 2025 10:47:42 -0700 Subject: [PATCH 2/2] fixup! src: log error stack trace if provided Signed-off-by: flakey5 <73616808+flakey5@users.noreply.github.com> --- src/logger/__tests__/logger.test.mjs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/logger/__tests__/logger.test.mjs b/src/logger/__tests__/logger.test.mjs index 51685af8..006d2495 100644 --- a/src/logger/__tests__/logger.test.mjs +++ b/src/logger/__tests__/logger.test.mjs @@ -203,7 +203,8 @@ describe('createLogger', () => { const logger = createLogger(transport, LogLevel.error); - logger.error(new Error('Hello, World!')); + const error = new Error('Hello, World!'); + logger.error(error); strictEqual(transport.mock.callCount(), 1); @@ -212,7 +213,9 @@ describe('createLogger', () => { { level: LogLevel.error, message: 'Hello, World!', - metadata: {}, + metadata: { + stack: error.stack, + }, module: undefined, timestamp: 0, },