@@ -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,15 @@ export interface LogConvertible extends Record<string, any> {
254
256
toLog ( ) : Record < string , any > ;
255
257
}
256
258
259
+ /** @internal */
260
+ export function stringifyWithMaxLen ( value : any , maxDocumentLength : number ) : string {
261
+ const ejson = EJSON . stringify ( value ) ;
262
+
263
+ return maxDocumentLength !== 0 && ejson . length > maxDocumentLength
264
+ ? `${ ejson . slice ( 0 , maxDocumentLength ) } ...`
265
+ : ejson ;
266
+ }
267
+
257
268
/** @internal */
258
269
export type Loggable = LoggableEvent | LogConvertible ;
259
270
@@ -292,22 +303,23 @@ function attachConnectionFields(
292
303
}
293
304
294
305
function defaultLogTransform (
295
- logObject : LoggableEvent | Record < string , any >
306
+ logObject : LoggableEvent | Record < string , any > ,
307
+ maxDocumentLength : number = DEFAULT_MAX_DOCUMENT_LENGTH
296
308
) : Omit < Log , 's' | 't' | 'c' > {
297
309
let log : Omit < Log , 's' | 't' | 'c' > = Object . create ( null ) ;
298
310
299
311
switch ( logObject . name ) {
300
312
case COMMAND_STARTED :
301
313
log = attachCommandFields ( log , logObject ) ;
302
314
log . message = 'Command started' ;
303
- log . command = EJSON . stringify ( logObject . command ) ;
315
+ log . command = stringifyWithMaxLen ( logObject . command , maxDocumentLength ) ;
304
316
log . databaseName = logObject . databaseName ;
305
317
return log ;
306
318
case COMMAND_SUCCEEDED :
307
319
log = attachCommandFields ( log , logObject ) ;
308
320
log . message = 'Command succeeded' ;
309
321
log . durationMS = logObject . duration ;
310
- log . reply = EJSON . stringify ( logObject . reply ) ;
322
+ log . reply = stringifyWithMaxLen ( logObject . reply , maxDocumentLength ) ;
311
323
return log ;
312
324
case COMMAND_FAILED :
313
325
log = attachCommandFields ( log , logObject ) ;
@@ -452,7 +464,7 @@ export class MongoLogger {
452
464
if ( isLogConvertible ( message ) ) {
453
465
logMessage = { ...logMessage , ...message . toLog ( ) } ;
454
466
} else {
455
- logMessage = { ...logMessage , ...defaultLogTransform ( message ) } ;
467
+ logMessage = { ...logMessage , ...defaultLogTransform ( message , this . maxDocumentLength ) } ;
456
468
}
457
469
}
458
470
this . logDestination . write ( logMessage ) ;
0 commit comments