@@ -53,6 +53,8 @@ export const SeverityLevel = Object.freeze({
53
53
OFF : 'off'
54
54
} as const ) ;
55
55
56
+ /** @internal */
57
+ export const DEFAULT_MAX_DOCUMENT_LENGTH = 1000 ;
56
58
/** @internal */
57
59
export type SeverityLevel = ( typeof SeverityLevel ) [ keyof typeof SeverityLevel ] ;
58
60
@@ -254,6 +256,18 @@ export interface LogConvertible extends Record<string, any> {
254
256
toLog ( ) : Record < string , any > ;
255
257
}
256
258
259
+ /** @internal */
260
+ export function maybeTruncate (
261
+ ejson : string ,
262
+ maxDocumentLength : number = DEFAULT_MAX_DOCUMENT_LENGTH
263
+ ) : string {
264
+ if ( maxDocumentLength === 0 ) {
265
+ return ejson ;
266
+ }
267
+
268
+ return ejson . length > maxDocumentLength ? `${ ejson . slice ( 0 , maxDocumentLength ) } ...` : ejson ;
269
+ }
270
+
257
271
/** @internal */
258
272
export type Loggable = LoggableEvent | LogConvertible ;
259
273
@@ -292,22 +306,23 @@ function attachConnectionFields(
292
306
}
293
307
294
308
function defaultLogTransform (
295
- logObject : LoggableEvent | Record < string , any >
309
+ logObject : LoggableEvent | Record < string , any > ,
310
+ maxDocumentLength : number = DEFAULT_MAX_DOCUMENT_LENGTH
296
311
) : Omit < Log , 's' | 't' | 'c' > {
297
312
let log : Omit < Log , 's' | 't' | 'c' > = Object . create ( null ) ;
298
313
299
314
switch ( logObject . name ) {
300
315
case COMMAND_STARTED :
301
316
log = attachCommandFields ( log , logObject ) ;
302
317
log . message = 'Command started' ;
303
- log . command = EJSON . stringify ( logObject . command ) ;
318
+ log . command = maybeTruncate ( EJSON . stringify ( logObject . command ) , maxDocumentLength ) ;
304
319
log . databaseName = logObject . databaseName ;
305
320
return log ;
306
321
case COMMAND_SUCCEEDED :
307
322
log = attachCommandFields ( log , logObject ) ;
308
323
log . message = 'Command succeeded' ;
309
324
log . durationMS = logObject . duration ;
310
- log . reply = EJSON . stringify ( logObject . reply ) ;
325
+ log . reply = maybeTruncate ( EJSON . stringify ( logObject . reply ) , maxDocumentLength ) ;
311
326
return log ;
312
327
case COMMAND_FAILED :
313
328
log = attachCommandFields ( log , logObject ) ;
@@ -452,7 +467,7 @@ export class MongoLogger {
452
467
if ( isLogConvertible ( message ) ) {
453
468
logMessage = { ...logMessage , ...message . toLog ( ) } ;
454
469
} else {
455
- logMessage = { ...logMessage , ...defaultLogTransform ( message ) } ;
470
+ logMessage = { ...logMessage , ...defaultLogTransform ( message , this . maxDocumentLength ) } ;
456
471
}
457
472
}
458
473
this . logDestination . write ( logMessage ) ;
0 commit comments