Skip to content

Commit cfc6fa7

Browse files
committed
fix(logging): prefer ToolkitError.trace
Problem: When debugging/developing Toolkit, the logger logs the default nodejs stacktrace instead of `ToolkitError.trace`. That is sub-optimal because: 1. doesn't reflect what users will see (confusing: as a developer I want to make sure the logs are meaningful for the user). 2. as a developer, the nodejs stacktrace is often useless anyway. Solution: Prefer to log `ToolkitError.trace` even if we have source mapping.
1 parent 59dc145 commit cfc6fa7

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/shared/logger/winstonToolkitLogger.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,18 @@ export class WinstonToolkitLogger implements Logger, vscode.Disposable {
119119
}
120120

121121
private mapError(level: LogLevel, err: Error): Error | string {
122+
// Use ToolkitError.trace even if we have source mapping (see below), because:
123+
// 1. it is what users will see, we want visibility into that when debugging
124+
// 2. it is often more useful than the stacktrace anyway
125+
if (err instanceof ToolkitError) {
126+
return err.trace
127+
}
128+
122129
if (isSourceMappingAvailable() && level === 'error') {
123130
return err
124131
}
125132

126-
return err instanceof ToolkitError ? err.trace : formatError(UnknownError.cast(err))
133+
return formatError(UnknownError.cast(err))
127134
}
128135

129136
private writeToLogs(level: LogLevel, message: string | Error, ...meta: any[]): number {

0 commit comments

Comments
 (0)