@@ -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
/**
@@ -636,6 +637,17 @@ class Logger extends Utility implements LoggerInterface {
636
637
return this . getLogEvent ( ) ;
637
638
}
638
639
640
+ /**
641
+ * It prints a log item with level TRACE.
642
+ *
643
+ * @param {LogItemMessage } input
644
+ * @param {Error | LogAttributes | string } extraInput
645
+ * @returns {void }
646
+ */
647
+ public trace ( input : LogItemMessage , ...extraInput : LogItemExtraInput ) : void {
648
+ this . processLogItem ( this . logLevelThresholds . TRACE , input , extraInput ) ;
649
+ }
650
+
639
651
/**
640
652
* It prints a log item with level WARN.
641
653
*
@@ -644,7 +656,7 @@ class Logger extends Utility implements LoggerInterface {
644
656
* @returns {void }
645
657
*/
646
658
public warn ( input : LogItemMessage , ...extraInput : LogItemExtraInput ) : void {
647
- this . processLogItem ( 16 , input , extraInput ) ;
659
+ this . processLogItem ( this . logLevelThresholds . WARN , input , extraInput ) ;
648
660
}
649
661
650
662
/**
@@ -913,7 +925,7 @@ class Logger extends Utility implements LoggerInterface {
913
925
log . prepareForPrint ( ) ;
914
926
915
927
const consoleMethod =
916
- logLevel === 24
928
+ logLevel === this . logLevelThresholds . CRITICAL
917
929
? 'error'
918
930
: ( this . getLogLevelNameFromNumber ( logLevel ) . toLowerCase ( ) as keyof Omit <
919
931
LogFunction ,
@@ -970,6 +982,13 @@ class Logger extends Utility implements LoggerInterface {
970
982
} else {
971
983
this . console = console ;
972
984
}
985
+
986
+ /**
987
+ * Patch `console.trace` to avoid printing a stack trace and aligning with AWS Lambda behavior - see #2902
988
+ */
989
+ this . console . trace = ( message : string , ...optionalParams : unknown [ ] ) => {
990
+ this . console . log ( message , ...optionalParams ) ;
991
+ } ;
973
992
}
974
993
975
994
/**
@@ -1050,7 +1069,12 @@ class Logger extends Utility implements LoggerInterface {
1050
1069
if ( this . isValidSampleRate ( value ) ) {
1051
1070
this . powertoolsLogData . sampleRateValue = value ;
1052
1071
1053
- if ( value && randomInt ( 0 , 100 ) / 100 <= value ) {
1072
+ if (
1073
+ this . logLevel > this . logLevelThresholds . DEBUG &&
1074
+ value &&
1075
+ randomInt ( 0 , 100 ) / 100 <= value
1076
+ ) {
1077
+ // only change logLevel if higher than debug, i.e. don't change from e.g. tracing to debug
1054
1078
this . setLogLevel ( 'DEBUG' ) ;
1055
1079
this . debug ( 'Setting log level to DEBUG due to sampling rate' ) ;
1056
1080
} else {
0 commit comments