11import { Transform } from "node:stream" ;
22import {
3+ _compasSentryExport ,
34 AppError ,
45 eventStart ,
56 eventStop ,
@@ -41,7 +42,7 @@ export function logMiddleware(app, options) {
4142 * @param {bigint } startTime
4243 * @param {number } length
4344 */
44- function logInfo ( ctx , startTime , length ) {
45+ function logInfoAndEndTrace ( ctx , startTime , length ) {
4546 const duration = Math . round (
4647 Number ( process . hrtime . bigint ( ) - startTime ) / 1000000 ,
4748 ) ;
@@ -79,8 +80,30 @@ export function logMiddleware(app, options) {
7980 // Skip eventStop if we don't have events enabled.
8081 // Skip eventStop for CORS requests, this gives a bit cleaner logs.
8182 if ( options . disableRootEvent !== true && ctx . method !== "OPTIONS" ) {
83+ if ( _compasSentryExport ) {
84+ const span = _compasSentryExport . getActiveSpan ( ) ;
85+ if ( span ) {
86+ span . description = ctx . event . name ;
87+ span . updateName ( ctx . event . name ) ;
88+ }
89+ }
90+
8291 eventStop ( ctx . event ) ;
8392 }
93+
94+ if ( _compasSentryExport ) {
95+ const span = _compasSentryExport . getActiveSpan ( ) ;
96+ if ( span ) {
97+ span . setStatus (
98+ _compasSentryExport . getSpanStatusFromHttpCode ( ctx . status ) ,
99+ ) ;
100+ span . setAttributes ( {
101+ params : ctx . validatedParams ,
102+ query : ctx . validatedQuery ,
103+ } ) ;
104+ span . end ( ) ;
105+ }
106+ }
84107 }
85108
86109 // Log stream errors after the headers are sent
@@ -96,6 +119,10 @@ export function logMiddleware(app, options) {
96119 syscall : error . syscall ,
97120 error : AppError . format ( error ) ,
98121 } ) ;
122+
123+ if ( _compasSentryExport ) {
124+ _compasSentryExport . captureException ( error ) ;
125+ }
99126 } ) ;
100127
101128 return async ( ctx , next ) => {
@@ -124,8 +151,9 @@ export function logMiddleware(app, options) {
124151 } catch {
125152 // May throw on circular objects
126153 }
154+
127155 if ( ! isNil ( responseLength ) ) {
128- logInfo ( ctx , startTime , responseLength ) ;
156+ logInfoAndEndTrace ( ctx , startTime , responseLength ) ;
129157 return ;
130158 } else if ( ctx . body && ctx . body . readable ) {
131159 const body = ctx . body ;
@@ -134,7 +162,7 @@ export function logMiddleware(app, options) {
134162 await bodyCloseOrFinish ( ctx ) ;
135163 }
136164
137- logInfo ( ctx , startTime , isNil ( counter ) ? 0 : counter . length ) ;
165+ logInfoAndEndTrace ( ctx , startTime , isNil ( counter ) ? 0 : counter . length ) ;
138166 } ;
139167}
140168
0 commit comments