@@ -117,7 +117,7 @@ class Logger extends Utility implements ClassThatLogs {
117
117
118
118
private customConfigService ?: ConfigServiceInterface ;
119
119
120
- private static readonly defaultLogLevel : LogLevel = 'INFO' ;
120
+ private static readonly defaultLogLevel : Uppercase < LogLevel > = 'INFO' ;
121
121
122
122
// envVarsService is always initialized in the constructor in setOptions()
123
123
private envVarsService ! : EnvironmentVariablesService ;
@@ -128,7 +128,7 @@ class Logger extends Utility implements ClassThatLogs {
128
128
129
129
private logIndentation : number = LogJsonIndent . COMPACT ;
130
130
131
- private logLevel ?: LogLevel ;
131
+ private logLevel ?: Uppercase < LogLevel > ;
132
132
133
133
private readonly logLevelThresholds : LogLevelThresholds = {
134
134
DEBUG : 8 ,
@@ -554,12 +554,16 @@ class Logger extends Utility implements ClassThatLogs {
554
554
555
555
/**
556
556
* It returns the log level set for the Logger instance.
557
+ *
558
+ * Even though logLevel starts as undefined, it will always be set to a value
559
+ * during the Logger instance's initialization. So, we can safely use the non-null
560
+ * assertion operator here.
557
561
*
558
562
* @private
559
563
* @returns {LogLevel }
560
564
*/
561
- private getLogLevel ( ) : LogLevel {
562
- return < LogLevel > this . logLevel ;
565
+ private getLogLevel ( ) : Uppercase < LogLevel > {
566
+ return this . logLevel ! ;
563
567
}
564
568
565
569
/**
@@ -619,14 +623,14 @@ class Logger extends Utility implements ClassThatLogs {
619
623
}
620
624
621
625
/**
622
- * It returns true if the provided log level is valid.
626
+ * It returns true and type guards the log level if a given log level is valid.
623
627
*
624
628
* @param {LogLevel } logLevel
625
629
* @private
626
630
* @returns {boolean }
627
631
*/
628
- private isValidLogLevel ( logLevel ?: LogLevel ) : boolean {
629
- return typeof logLevel === 'string' && logLevel . toUpperCase ( ) in this . logLevelThresholds ;
632
+ private isValidLogLevel ( logLevel ?: LogLevel | string ) : logLevel is Uppercase < LogLevel > {
633
+ return typeof logLevel === 'string' && logLevel in this . logLevelThresholds ;
630
634
}
631
635
632
636
/**
@@ -647,11 +651,12 @@ class Logger extends Utility implements ClassThatLogs {
647
651
/**
648
652
* It prints a given log with given log level.
649
653
*
650
- * @param {LogLevel } logLevel
651
- * @param {LogItem } log
654
+ * @param {Uppercase<LogLevel> } logLevel
655
+ * @param {LogItemMessage } input
656
+ * @param {LogItemExtraInput } extraInput
652
657
* @private
653
658
*/
654
- private processLogItem ( logLevel : LogLevel , input : LogItemMessage , extraInput : LogItemExtraInput ) : void {
659
+ private processLogItem ( logLevel : Uppercase < LogLevel > , input : LogItemMessage , extraInput : LogItemExtraInput ) : void {
655
660
if ( ! this . shouldPrint ( logLevel ) ) {
656
661
return ;
657
662
}
@@ -743,20 +748,25 @@ class Logger extends Utility implements ClassThatLogs {
743
748
* @returns {void }
744
749
*/
745
750
private setLogLevel ( logLevel ?: LogLevel ) : void {
746
- if ( this . isValidLogLevel ( logLevel ) ) {
747
- this . logLevel = ( < LogLevel > logLevel ) . toUpperCase ( ) ;
751
+ const constructorLogLevel = logLevel ?. toUpperCase ( ) ;
752
+ if ( this . isValidLogLevel ( constructorLogLevel ) ) {
753
+ this . logLevel = constructorLogLevel ;
748
754
749
755
return ;
750
756
}
751
- const customConfigValue = this . getCustomConfigService ( ) ?. getLogLevel ( ) ;
757
+ const customConfigValue = this . getCustomConfigService ( )
758
+ ?. getLogLevel ( )
759
+ ?. toUpperCase ( ) ;
752
760
if ( this . isValidLogLevel ( customConfigValue ) ) {
753
- this . logLevel = ( < LogLevel > customConfigValue ) . toUpperCase ( ) ;
761
+ this . logLevel = customConfigValue ;
754
762
755
763
return ;
756
764
}
757
- const envVarsValue = this . getEnvVarsService ( ) . getLogLevel ( ) ;
765
+ const envVarsValue = this . getEnvVarsService ( )
766
+ ?. getLogLevel ( )
767
+ ?. toUpperCase ( ) ;
758
768
if ( this . isValidLogLevel ( envVarsValue ) ) {
759
- this . logLevel = ( < LogLevel > envVarsValue ) . toUpperCase ( ) ;
769
+ this . logLevel = envVarsValue ;
760
770
761
771
return ;
762
772
}
@@ -845,14 +855,15 @@ class Logger extends Utility implements ClassThatLogs {
845
855
/**
846
856
* It checks whether the current log item should/can be printed.
847
857
*
848
- * @param {string } serviceName
849
- * @param {Environment } environment
850
- * @param {LogAttributes } persistentLogAttributes
858
+ * @param {Uppercase<LogLevel> } logLevel
851
859
* @private
852
860
* @returns {boolean }
853
861
*/
854
- private shouldPrint ( logLevel : LogLevel ) : boolean {
855
- if ( this . logLevelThresholds [ logLevel ] >= this . logLevelThresholds [ this . getLogLevel ( ) ] ) {
862
+ private shouldPrint ( logLevel : Uppercase < LogLevel > ) : boolean {
863
+ if (
864
+ this . logLevelThresholds [ logLevel ] >=
865
+ this . logLevelThresholds [ this . getLogLevel ( ) ]
866
+ ) {
856
867
return true ;
857
868
}
858
869
0 commit comments