@@ -20,6 +20,13 @@ const LogLevelIndexes = {
2020 NONE : 5
2121} ;
2222
23+ const DEFAULT_LOGGER : SplitIO . Logger = {
24+ debug ( msg ) { console . log ( '[DEBUG] ' + msg ) ; } ,
25+ info ( msg ) { console . log ( '[INFO] ' + msg ) ; } ,
26+ warn ( msg ) { console . log ( '[WARN] ' + msg ) ; } ,
27+ error ( msg ) { console . log ( '[ERROR] ' + msg ) ; }
28+ } ;
29+
2330export function isLogLevelString ( str : string ) : str is SplitIO . LogLevel {
2431 return ! ! find ( LogLevels , ( lvl : string ) => str === lvl ) ;
2532}
@@ -41,7 +48,6 @@ export function _sprintf(format: string = '', args: any[] = []): string {
4148const defaultOptions = {
4249 prefix : 'splitio' ,
4350 logLevel : LogLevels . NONE ,
44- showLevel : true ,
4551} ;
4652
4753export class Logger implements ILogger {
@@ -68,63 +74,48 @@ export class Logger implements ILogger {
6874 this . logger = logger ;
6975 // If custom logger is set, all logs are either enabled or disabled
7076 if ( this . logLevel !== LogLevelIndexes . NONE ) this . setLogLevel ( LogLevels . DEBUG ) ;
77+ return ;
7178 } else {
72- this . _log ( LogLevels . ERROR , 'Invalid `logger` instance. It must be an object with `debug`, `info`, `warn` and `error` methods. Defaulting to `console.log`' ) ;
73- this . logger = undefined ;
79+ this . error ( 'Invalid `logger` instance. It must be an object with `debug`, `info`, `warn` and `error` methods. Defaulting to `console.log`' ) ;
7480 }
7581 }
82+ // unset
83+ this . logger = undefined ;
7684 }
7785
7886 debug ( msg : string | number , args ?: any [ ] ) {
79- if ( this . _shouldLog ( LogLevelIndexes . DEBUG ) ) this . _log ( LogLevels . DEBUG , msg , args ) ;
87+ if ( this . _shouldLog ( LogLevelIndexes . DEBUG ) ) this . _log ( 'debug' , msg , args ) ;
8088 }
8189
8290 info ( msg : string | number , args ?: any [ ] ) {
83- if ( this . _shouldLog ( LogLevelIndexes . INFO ) ) this . _log ( LogLevels . INFO , msg , args ) ;
91+ if ( this . _shouldLog ( LogLevelIndexes . INFO ) ) this . _log ( 'info' , msg , args ) ;
8492 }
8593
8694 warn ( msg : string | number , args ?: any [ ] ) {
87- if ( this . _shouldLog ( LogLevelIndexes . WARN ) ) this . _log ( LogLevels . WARN , msg , args ) ;
95+ if ( this . _shouldLog ( LogLevelIndexes . WARN ) ) this . _log ( 'warn' , msg , args ) ;
8896 }
8997
9098 error ( msg : string | number , args ?: any [ ] ) {
91- if ( this . _shouldLog ( LogLevelIndexes . ERROR ) ) this . _log ( LogLevels . ERROR , msg , args ) ;
99+ if ( this . _shouldLog ( LogLevelIndexes . ERROR ) ) this . _log ( 'error' , msg , args ) ;
92100 }
93101
94- private _log ( level : SplitIO . LogLevel , msg : string | number , args ?: any [ ] ) {
102+ _log ( method : keyof SplitIO . Logger , msg : string | number , args ?: any [ ] ) {
95103 if ( typeof msg === 'number' ) {
96104 const format = this . codes . get ( msg ) ;
97105 msg = format ? _sprintf ( format , args ) : `Message code ${ msg } ${ args ? ', with args: ' + args . toString ( ) : '' } ` ;
98106 } else {
99107 if ( args ) msg = _sprintf ( msg , args ) ;
100108 }
101109
102- const formattedText = this . _generateLogMessage ( level , msg ) ;
110+ if ( this . options . prefix ) msg = this . options . prefix + ' => ' + msg ;
103111
104- // Do not break on custom logger errors
105112 if ( this . logger ) {
106- try { // @ts -expect-error
107- this . logger [ level . toLowerCase ( ) ] ( formattedText ) ;
113+ try {
114+ this . logger [ method ] ( msg ) ;
108115 return ;
109116 } catch ( e ) { /* empty */ }
110117 }
111-
112- console . log ( formattedText ) ;
113- }
114-
115- private _generateLogMessage ( level : SplitIO . LogLevel , text : string ) {
116- const textPre = ' => ' ;
117- let result = '' ;
118-
119- if ( this . options . showLevel ) {
120- result += '[' + level + ']' + ( level === LogLevels . INFO || level === LogLevels . WARN ? ' ' : '' ) + ' ' ;
121- }
122-
123- if ( this . options . prefix ) {
124- result += this . options . prefix + textPre ;
125- }
126-
127- return result += text ;
118+ DEFAULT_LOGGER [ method ] ( msg ) ;
128119 }
129120
130121 private _shouldLog ( level : number ) {
0 commit comments