File tree Expand file tree Collapse file tree 1 file changed +21
-4
lines changed
Expand file tree Collapse file tree 1 file changed +21
-4
lines changed Original file line number Diff line number Diff line change 77 ObjectAssign,
88 ObjectKeys,
99 ObjectPrototypeToString,
10+ SafeSet,
1011} = primordials ;
1112
1213const {
@@ -331,22 +332,38 @@ class Logger {
331332 }
332333
333334 /**
334- * Serialize Error object for logging
335+ * Serialize Error object for logging (with recursive cause handling)
335336 * @param {object } err - Error object to serialize
337+ * @param {Set } [seen] - Set to track circular references
336338 * @returns {object } Serialized error object
337339 * @private
338340 */
339- _serializeError ( err ) {
341+ _serializeError ( err , seen = new SafeSet ( ) ) {
342+ if ( seen . has ( err ) ) {
343+ return '[Circular]' ;
344+ }
345+ seen . add ( err ) ;
346+
340347 const serialized = {
341348 message : err . message ,
342349 name : err . name ,
343350 stack : err . stack ,
344351 } ;
345352
346- serialized . code ||= err . code ;
353+ if ( err . code !== undefined ) {
354+ serialized . code = err . code ;
355+ }
356+
357+ if ( err . cause !== undefined ) {
358+ serialized . cause = this . _isError ( err . cause ) ?
359+ this . _serializeError ( err . cause , seen ) :
360+ err . cause ;
361+ }
347362
348363 for ( const key in err ) {
349- serialized [ key ] ||= err [ key ] ;
364+ if ( serialized [ key ] === undefined ) {
365+ serialized [ key ] = err [ key ] ;
366+ }
350367 }
351368
352369 return serialized ;
You can’t perform that action at this time.
0 commit comments