@@ -41,23 +41,31 @@ const defaultOptions = {
4141 prefix : 'splitio' ,
4242 logLevel : LogLevels . NONE ,
4343 showLevel : true ,
44- logger ( formattedMsg : string ) { console . log ( formattedMsg ) ; }
44+ } ;
45+
46+ const defaultConsoleLogger : SplitIO . Logger = {
47+ debug ( message : string ) { console . log ( message ) ; } ,
48+ info ( message : string ) { console . log ( message ) ; } ,
49+ warn ( message : string ) { console . log ( message ) ; } ,
50+ error ( message : string ) { console . log ( message ) ; }
4551} ;
4652
4753export class Logger implements ILogger {
4854
4955 private options : Required < ILoggerOptions > ;
5056 private codes : Map < number , string > ;
5157 private logLevel : number ;
58+ private logger : SplitIO . Logger ;
5259
5360 constructor ( options ?: ILoggerOptions , codes ?: Map < number , string > ) {
5461 this . options = objectAssign ( { } , defaultOptions , options ) ;
5562 this . codes = codes || new Map ( ) ;
5663 this . logLevel = LogLevelIndexes [ this . options . logLevel ] ;
64+ this . logger = defaultConsoleLogger ;
5765 }
5866
59- setLogger ( logger : ( formattedMsg : string , level : SplitIO . LogLevel , msg : string ) => void ) {
60- this . options . logger = logger ;
67+ setLogger ( logger : SplitIO . Logger ) {
68+ this . logger = logger ;
6169 }
6270
6371 setLogLevel ( logLevel : SplitIO . LogLevel ) {
@@ -66,32 +74,30 @@ export class Logger implements ILogger {
6674 }
6775
6876 debug ( msg : string | number , args ?: any [ ] ) {
69- if ( this . _shouldLog ( LogLevelIndexes . DEBUG ) ) this . _log ( LogLevels . DEBUG , msg , args ) ;
77+ if ( this . _shouldLog ( LogLevelIndexes . DEBUG ) ) this . logger . debug ( this . _log ( LogLevels . DEBUG , msg , args ) ) ;
7078 }
7179
7280 info ( msg : string | number , args ?: any [ ] ) {
73- if ( this . _shouldLog ( LogLevelIndexes . INFO ) ) this . _log ( LogLevels . INFO , msg , args ) ;
81+ if ( this . _shouldLog ( LogLevelIndexes . INFO ) ) this . logger . info ( this . _log ( LogLevels . INFO , msg , args ) ) ;
7482 }
7583
7684 warn ( msg : string | number , args ?: any [ ] ) {
77- if ( this . _shouldLog ( LogLevelIndexes . WARN ) ) this . _log ( LogLevels . WARN , msg , args ) ;
85+ if ( this . _shouldLog ( LogLevelIndexes . WARN ) ) this . logger . warn ( this . _log ( LogLevels . WARN , msg , args ) ) ;
7886 }
7987
8088 error ( msg : string | number , args ?: any [ ] ) {
81- if ( this . _shouldLog ( LogLevelIndexes . ERROR ) ) this . _log ( LogLevels . ERROR , msg , args ) ;
89+ if ( this . _shouldLog ( LogLevelIndexes . ERROR ) ) this . logger . error ( this . _log ( LogLevels . ERROR , msg , args ) ) ;
8290 }
8391
84- private _log ( level : SplitIO . LogLevel , msg : string | number , args ?: any [ ] ) {
92+ private _log ( level : SplitIO . LogLevel , msg : string | number , args ?: any [ ] ) : string {
8593 if ( typeof msg === 'number' ) {
8694 const format = this . codes . get ( msg ) ;
8795 msg = format ? _sprintf ( format , args ) : `Message code ${ msg } ${ args ? ', with args: ' + args . toString ( ) : '' } ` ;
8896 } else {
8997 if ( args ) msg = _sprintf ( msg , args ) ;
9098 }
9199
92- const formattedText = this . _generateLogMessage ( level , msg ) ;
93-
94- this . options . logger ( formattedText , level , msg ) ;
100+ return this . _generateLogMessage ( level , msg ) ;
95101 }
96102
97103 private _generateLogMessage ( level : SplitIO . LogLevel , text : string ) {
0 commit comments