@@ -79,57 +79,60 @@ export function _INTERNAL_captureLog(
7979 return ;
8080 }
8181
82- client . emit ( 'beforeCaptureLog' , beforeLog ) ;
83-
84- const log = beforeSendLog ? beforeSendLog ( beforeLog ) : beforeLog ;
85- if ( ! log ) {
86- client . recordDroppedEvent ( 'before_send' , 'log_item' , 1 ) ;
87- DEBUG_BUILD && logger . warn ( 'beforeSendLog returned null, log will not be captured.' ) ;
88- return ;
89- }
90-
9182 const [ , traceContext ] = _getTraceInfoFromScope ( client , scope ) ;
9283
93- const { level, message, attributes, severityNumber } = log ;
94-
95- const logAttributes = {
96- ...attributes ,
84+ const processedLogAttributes = {
85+ ...beforeLog . attributes ,
9786 } ;
9887
9988 if ( release ) {
100- logAttributes [ 'sentry.release' ] = release ;
89+ processedLogAttributes [ 'sentry.release' ] = release ;
10190 }
10291
10392 if ( environment ) {
104- logAttributes [ 'sentry.environment' ] = environment ;
93+ processedLogAttributes [ 'sentry.environment' ] = environment ;
10594 }
10695
10796 const { sdk } = client . getSdkMetadata ( ) ?? { } ;
10897 if ( sdk ) {
109- logAttributes [ 'sentry.sdk.name' ] = sdk . name ;
110- logAttributes [ 'sentry.sdk.version' ] = sdk . version ;
98+ processedLogAttributes [ 'sentry.sdk.name' ] = sdk . name ;
99+ processedLogAttributes [ 'sentry.sdk.version' ] = sdk . version ;
111100 }
112101
113- if ( isParameterizedString ( message ) ) {
114- const { __sentry_template_string__, __sentry_template_values__ = [ ] } = message ;
115- logAttributes [ 'sentry.message.template' ] = __sentry_template_string__ ;
102+ const beforeLogMessage = beforeLog . message ;
103+ if ( isParameterizedString ( beforeLogMessage ) ) {
104+ const { __sentry_template_string__, __sentry_template_values__ = [ ] } = beforeLogMessage ;
105+ processedLogAttributes [ 'sentry.message.template' ] = __sentry_template_string__ ;
116106 __sentry_template_values__ . forEach ( ( param , index ) => {
117- logAttributes [ `sentry.message.parameter.${ index } ` ] = param ;
107+ processedLogAttributes [ `sentry.message.parameter.${ index } ` ] = param ;
118108 } ) ;
119109 }
120110
121111 const span = _getSpanForScope ( scope ) ;
122112 if ( span ) {
123113 // Add the parent span ID to the log attributes for trace context
124- logAttributes [ 'sentry.trace.parent_span_id' ] = span . spanContext ( ) . spanId ;
114+ processedLogAttributes [ 'sentry.trace.parent_span_id' ] = span . spanContext ( ) . spanId ;
125115 }
126116
117+ const processedLog = { ...beforeLog , attributes : processedLogAttributes } ;
118+
119+ client . emit ( 'beforeCaptureLog' , processedLog ) ;
120+
121+ const log = beforeSendLog ? beforeSendLog ( processedLog ) : processedLog ;
122+ if ( ! log ) {
123+ client . recordDroppedEvent ( 'before_send' , 'log_item' , 1 ) ;
124+ DEBUG_BUILD && logger . warn ( 'beforeSendLog returned null, log will not be captured.' ) ;
125+ return ;
126+ }
127+
128+ const { level, message, attributes = { } , severityNumber } = log ;
129+
127130 const serializedLog : SerializedOtelLog = {
128131 severityText : level ,
129132 body : {
130133 stringValue : message ,
131134 } ,
132- attributes : Object . entries ( logAttributes ) . map ( ( [ key , value ] ) => logAttributeToSerializedLogAttribute ( key , value ) ) ,
135+ attributes : Object . entries ( attributes ) . map ( ( [ key , value ] ) => logAttributeToSerializedLogAttribute ( key , value ) ) ,
133136 timeUnixNano : `${ new Date ( ) . getTime ( ) . toString ( ) } 000000` ,
134137 traceId : traceContext ?. trace_id ,
135138 severityNumber : severityNumber ?? SEVERITY_TEXT_TO_SEVERITY_NUMBER [ level ] ,
0 commit comments