@@ -158,6 +158,7 @@ class Logger extends Utility implements LoggerInterface {
158
158
* The levels are in ascending order from the most verbose to the least verbose (no logs).
159
159
*/
160
160
private readonly logLevelThresholds : LogLevelThresholds = {
161
+ TRACE : 6 ,
161
162
DEBUG : 8 ,
162
163
INFO : 12 ,
163
164
WARN : 16 ,
@@ -200,7 +201,7 @@ class Logger extends Utility implements LoggerInterface {
200
201
*
201
202
* We keep this value to be able to reset the log level to the initial value when the sample rate is refreshed.
202
203
*/
203
- #initialLogLevel = 12 ;
204
+ #initialLogLevel = this . logLevelThresholds . INFO ;
204
205
/**
205
206
* Replacer function used to serialize the log items.
206
207
*/
@@ -337,7 +338,7 @@ class Logger extends Utility implements LoggerInterface {
337
338
input : LogItemMessage ,
338
339
...extraInput : LogItemExtraInput
339
340
) : void {
340
- this . processLogItem ( 24 , input , extraInput ) ;
341
+ this . processLogItem ( this . logLevelThresholds . CRITICAL , input , extraInput ) ;
341
342
}
342
343
343
344
/**
@@ -348,7 +349,7 @@ class Logger extends Utility implements LoggerInterface {
348
349
* @returns {void }
349
350
*/
350
351
public debug ( input : LogItemMessage , ...extraInput : LogItemExtraInput ) : void {
351
- this . processLogItem ( 8 , input , extraInput ) ;
352
+ this . processLogItem ( this . logLevelThresholds . DEBUG , input , extraInput ) ;
352
353
}
353
354
354
355
/**
@@ -359,7 +360,7 @@ class Logger extends Utility implements LoggerInterface {
359
360
* @returns {void }
360
361
*/
361
362
public error ( input : LogItemMessage , ...extraInput : LogItemExtraInput ) : void {
362
- this . processLogItem ( 20 , input , extraInput ) ;
363
+ this . processLogItem ( this . logLevelThresholds . ERROR , input , extraInput ) ;
363
364
}
364
365
365
366
/**
@@ -403,7 +404,7 @@ class Logger extends Utility implements LoggerInterface {
403
404
* @returns {void }
404
405
*/
405
406
public info ( input : LogItemMessage , ...extraInput : LogItemExtraInput ) : void {
406
- this . processLogItem ( 12 , input , extraInput ) ;
407
+ this . processLogItem ( this . logLevelThresholds . INFO , input , extraInput ) ;
407
408
}
408
409
409
410
/**
@@ -649,6 +650,17 @@ class Logger extends Utility implements LoggerInterface {
649
650
return this . getLogEvent ( ) ;
650
651
}
651
652
653
+ /**
654
+ * It prints a log item with level TRACE.
655
+ *
656
+ * @param {LogItemMessage } input
657
+ * @param {Error | LogAttributes | string } extraInput
658
+ * @returns {void }
659
+ */
660
+ public trace ( input : LogItemMessage , ...extraInput : LogItemExtraInput ) : void {
661
+ this . processLogItem ( this . logLevelThresholds . TRACE , input , extraInput ) ;
662
+ }
663
+
652
664
/**
653
665
* It prints a log item with level WARN.
654
666
*
@@ -657,7 +669,7 @@ class Logger extends Utility implements LoggerInterface {
657
669
* @returns {void }
658
670
*/
659
671
public warn ( input : LogItemMessage , ...extraInput : LogItemExtraInput ) : void {
660
- this . processLogItem ( 16 , input , extraInput ) ;
672
+ this . processLogItem ( this . logLevelThresholds . WARN , input , extraInput ) ;
661
673
}
662
674
663
675
/**
@@ -926,7 +938,7 @@ class Logger extends Utility implements LoggerInterface {
926
938
log . prepareForPrint ( ) ;
927
939
928
940
const consoleMethod =
929
- logLevel === 24
941
+ logLevel === this . logLevelThresholds . CRITICAL
930
942
? 'error'
931
943
: ( this . getLogLevelNameFromNumber ( logLevel ) . toLowerCase ( ) as keyof Omit <
932
944
LogFunction ,
@@ -983,6 +995,13 @@ class Logger extends Utility implements LoggerInterface {
983
995
} else {
984
996
this . console = console ;
985
997
}
998
+
999
+ /**
1000
+ * Patch `console.trace` to avoid printing a stack trace and aligning with AWS Lambda behavior - see #2902
1001
+ */
1002
+ this . console . trace = ( message : string , ...optionalParams : unknown [ ] ) => {
1003
+ this . console . log ( message , ...optionalParams ) ;
1004
+ } ;
986
1005
}
987
1006
988
1007
/**
@@ -1063,7 +1082,12 @@ class Logger extends Utility implements LoggerInterface {
1063
1082
if ( this . isValidSampleRate ( value ) ) {
1064
1083
this . powertoolsLogData . sampleRateValue = value ;
1065
1084
1066
- if ( value && randomInt ( 0 , 100 ) / 100 <= value ) {
1085
+ if (
1086
+ this . logLevel > this . logLevelThresholds . DEBUG &&
1087
+ value &&
1088
+ randomInt ( 0 , 100 ) / 100 <= value
1089
+ ) {
1090
+ // only change logLevel if higher than debug, i.e. don't change from e.g. tracing to debug
1067
1091
this . setLogLevel ( 'DEBUG' ) ;
1068
1092
this . debug ( 'Setting log level to DEBUG due to sampling rate' ) ;
1069
1093
} else {
0 commit comments