@@ -85,6 +85,26 @@ export class SentryTransport extends TransportStream {
8585
8686 const sentryLevel = this . levelsMap [ winstonLevel ]
8787
88+ // Normalize message to string
89+ let normalizedMessage = message
90+ if ( ! normalizedMessage || normalizedMessage === '' ) {
91+ // Try to get message from stack or error
92+ if ( meta . stack ) {
93+ normalizedMessage = ( meta . stack . split ( '\n' ) [ 0 ] || '' ) . trim ( )
94+ } else if ( meta . error instanceof Error ) {
95+ normalizedMessage = meta . error . message || meta . error . toString ( )
96+ } else {
97+ normalizedMessage = 'Empty log message'
98+ }
99+ } else if ( typeof normalizedMessage !== 'string' ) {
100+ // Stringify non-string messages
101+ try {
102+ normalizedMessage = JSON . stringify ( normalizedMessage )
103+ } catch {
104+ normalizedMessage = String ( normalizedMessage )
105+ }
106+ }
107+
88108 return Sentry . withScope ( ( scope ) => {
89109 if ( tags !== undefined && SentryTransport . isObject ( tags ) ) {
90110 scope . setTags ( tags )
@@ -100,11 +120,11 @@ export class SentryTransport extends TransportStream {
100120 if ( SentryTransport . shouldLogException ( sentryLevel ) ) {
101121 const error
102122 = Object . values ( info ) . find ( ( value ) => value instanceof Error )
103- ?? new ExtendedError ( info )
123+ ?? new ExtendedError ( { ... info , message : normalizedMessage } )
104124 Sentry . captureException ( error , { tags, level : sentryLevel } )
105125 } else {
106126 // Capturing Messages
107- Sentry . captureMessage ( message , sentryLevel )
127+ Sentry . captureMessage ( normalizedMessage , sentryLevel )
108128 }
109129 } )
110130 }
0 commit comments