@@ -284,27 +284,38 @@ const sendLog = async (logStreamFactory, options, event, message, data) => {
284
284
data . input = truncateData ( data . input , MAX_LENGTH ) ;
285
285
data . output = truncateData ( data . output , MAX_LENGTH ) ;
286
286
}
287
+
287
288
// scrub throws an error if there are no secrets
288
- const safeMessage = truncateString (
289
- sensitiveValues . length ? scrub ( message , sensitiveValues ) : message
290
- ) ;
291
- const safeData = recurseReplace (
292
- sensitiveValues . length ? scrub ( data , sensitiveValues ) : data ,
293
- truncateString
294
- ) ;
295
- const unsafeData = recurseReplace ( data , truncateString ) ;
289
+ let safeMessage , safeData ;
290
+ if ( sensitiveValues . length ) {
291
+ safeMessage = scrub ( message , sensitiveValues ) ;
292
+ safeData = scrub ( data , sensitiveValues ) ;
293
+ } else {
294
+ safeMessage = message ;
295
+ safeData = data ;
296
+ }
297
+
298
+ let safeKeyData = _ . pick ( data , SAFE_LOG_KEYS ) ;
299
+
300
+ if ( event . logFieldMaxLength != null && event . logFieldMaxLength >= 0 ) {
301
+ const truncate = ( s ) =>
302
+ simpleTruncate ( s , event . logFieldMaxLength , ' [...]' ) ;
303
+
304
+ safeMessage = truncate ( safeMessage ) ;
305
+ safeData = recurseReplace ( safeData , truncate ) ;
306
+ safeKeyData = recurseReplace ( safeKeyData , truncate ) ;
307
+ }
308
+
296
309
// Keep safe log keys uncensored
297
- Object . keys ( safeData ) . forEach ( ( key ) => {
298
- if ( SAFE_LOG_KEYS . includes ( key ) ) {
299
- safeData [ key ] = unsafeData [ key ] ;
300
- }
310
+ Object . entries ( safeKeyData ) . forEach ( ( [ key , value ] ) => {
311
+ safeData [ key ] = value ;
301
312
} ) ;
302
313
303
314
safeData . request_headers = formatHeaders ( safeData . request_headers ) ;
304
315
safeData . response_headers = formatHeaders ( safeData . response_headers ) ;
305
316
306
317
if ( event . logToStdout ) {
307
- toStdout ( event , message , unsafeData ) ;
318
+ toStdout ( event , message , safeData ) ;
308
319
}
309
320
310
321
if ( options . logBuffer && data . log_type === 'console' ) {
0 commit comments