@@ -20,6 +20,8 @@ let gcsServerStream: any
20
20
let gcsErrorStream : any
21
21
let gcsServerReqStream : any
22
22
23
+ let requestLogger : any
24
+
23
25
if ( process . env . STORAGE_TYPE === 's3' ) {
24
26
const accessKeyId = process . env . S3_STORAGE_ACCESS_KEY_ID
25
27
const secretAccessKey = process . env . S3_STORAGE_SECRET_ACCESS_KEY
@@ -165,6 +167,32 @@ const logger = createLogger({
165
167
]
166
168
} )
167
169
170
+ requestLogger = createLogger ( {
171
+ format : combine ( timestamp ( { format : 'YYYY-MM-DD HH:mm:ss' } ) , format . json ( ) , errors ( { stack : true } ) ) ,
172
+ defaultMeta : {
173
+ package : 'server'
174
+ } ,
175
+ transports : [
176
+ ...( process . env . DEBUG && process . env . DEBUG === 'true' ? [ new transports . Console ( ) ] : [ ] ) ,
177
+ ...( ! process . env . STORAGE_TYPE || process . env . STORAGE_TYPE === 'local'
178
+ ? [
179
+ new transports . File ( {
180
+ filename : path . join ( logDir , config . logging . express . filename ?? 'server-requests.log.jsonl' ) ,
181
+ level : config . logging . express . level ?? 'debug'
182
+ } )
183
+ ]
184
+ : [ ] ) ,
185
+ ...( process . env . STORAGE_TYPE === 's3'
186
+ ? [
187
+ new transports . Stream ( {
188
+ stream : s3ServerReqStream
189
+ } )
190
+ ]
191
+ : [ ] ) ,
192
+ ...( process . env . STORAGE_TYPE === 'gcs' ? [ gcsServerReqStream ] : [ ] )
193
+ ]
194
+ } )
195
+
168
196
export function expressRequestLogger ( req : Request , res : Response , next : NextFunction ) : void {
169
197
const unwantedLogURLs = [ '/api/v1/node-icon/' , '/api/v1/components-credentials-icon/' , '/api/v1/ping' ]
170
198
@@ -175,39 +203,17 @@ export function expressRequestLogger(req: Request, res: Response, next: NextFunc
175
203
sanitizedBody . password = '********'
176
204
}
177
205
178
- const fileLogger = createLogger ( {
179
- format : combine ( timestamp ( { format : 'YYYY-MM-DD HH:mm:ss' } ) , format . json ( ) , errors ( { stack : true } ) ) ,
180
- defaultMeta : {
181
- package : 'server' ,
182
- request : {
183
- method : req . method ,
184
- url : req . url ,
185
- body : sanitizedBody , // Use sanitized body instead of raw body
186
- query : req . query ,
187
- params : req . params ,
188
- headers : req . headers
189
- }
190
- } ,
191
- transports : [
192
- ...( process . env . DEBUG && process . env . DEBUG === 'true' ? [ new transports . Console ( ) ] : [ ] ) ,
193
- ...( ! process . env . STORAGE_TYPE || process . env . STORAGE_TYPE === 'local'
194
- ? [
195
- new transports . File ( {
196
- filename : path . join ( logDir , config . logging . express . filename ?? 'server-requests.log.jsonl' ) ,
197
- level : config . logging . express . level ?? 'debug'
198
- } )
199
- ]
200
- : [ ] ) ,
201
- ...( process . env . STORAGE_TYPE === 's3'
202
- ? [
203
- new transports . Stream ( {
204
- stream : s3ServerReqStream
205
- } )
206
- ]
207
- : [ ] ) ,
208
- ...( process . env . STORAGE_TYPE === 'gcs' ? [ gcsServerReqStream ] : [ ] )
209
- ]
210
- } )
206
+ // Use the shared requestLogger with request-specific metadata
207
+ const requestMetadata = {
208
+ request : {
209
+ method : req . method ,
210
+ url : req . url ,
211
+ body : sanitizedBody , // Use sanitized body instead of raw body
212
+ query : req . query ,
213
+ params : req . params ,
214
+ headers : req . headers
215
+ }
216
+ }
211
217
212
218
const getRequestEmoji = ( method : string ) => {
213
219
const requetsEmojis : Record < string , string > = {
@@ -222,10 +228,10 @@ export function expressRequestLogger(req: Request, res: Response, next: NextFunc
222
228
}
223
229
224
230
if ( req . method !== 'GET' ) {
225
- fileLogger . info ( `${ getRequestEmoji ( req . method ) } ${ req . method } ${ req . url } ` )
231
+ requestLogger . info ( `${ getRequestEmoji ( req . method ) } ${ req . method } ${ req . url } ` , requestMetadata )
226
232
logger . info ( `${ getRequestEmoji ( req . method ) } ${ req . method } ${ req . url } ` )
227
233
} else {
228
- fileLogger . http ( `${ getRequestEmoji ( req . method ) } ${ req . method } ${ req . url } ` )
234
+ requestLogger . http ( `${ getRequestEmoji ( req . method ) } ${ req . method } ${ req . url } ` , requestMetadata )
229
235
}
230
236
}
231
237
0 commit comments