22// If no minimum level is specified, all messages will be logged. Setting the level to "none"
33// disables all logging.
44
5+ // Note that the global console variable is not guaranteed to be defined at all times in all
6+ // browsers, so this implementation checks for its existence at the time a message is logged.
7+ // See: https://www.beyondjava.net/console-log-surprises-with-internet-explorer-11-and-edge
8+
59export default function createConsoleLogger ( level , maybePrefix ) {
610 const allLevels = [ 'debug' , 'info' , 'warn' , 'error' ] ;
711 let prefix ;
@@ -21,17 +25,20 @@ export default function createConsoleLogger(level, maybePrefix) {
2125
2226 const logger = { } ;
2327
24- function log ( levelIndex , outputFn , msg ) {
25- if ( levelIndex >= minLevelIndex ) {
26- const levelName = levelIndex < allLevels . length ? allLevels [ levelIndex ] : '?' ;
27- outputFn ( prefix + '[' + levelName + '] ' + msg ) ;
28+ function log ( levelIndex , methodName , msg ) {
29+ if ( levelIndex >= minLevelIndex && console ) {
30+ const method = console [ methodName ] ;
31+ if ( method ) {
32+ const levelName = levelIndex < allLevels . length ? allLevels [ levelIndex ] : '?' ;
33+ method . call ( console , prefix + '[' + levelName + '] ' + msg ) ;
34+ }
2835 }
2936 }
3037
31- logger . debug = msg => log ( 0 , console . log , msg ) ; // eslint-disable-line no-console
32- logger . info = msg => log ( 1 , console . info , msg ) ; // eslint-disable-line no-console
33- logger . warn = msg => log ( 2 , console . warn , msg ) ; // eslint-disable-line no-console
34- logger . error = msg => log ( 3 , console . error , msg ) ; // eslint-disable-line no-console
38+ logger . debug = msg => log ( 0 , ' log' , msg ) ; // eslint-disable-line no-console
39+ logger . info = msg => log ( 1 , ' info' , msg ) ; // eslint-disable-line no-console
40+ logger . warn = msg => log ( 2 , ' warn' , msg ) ; // eslint-disable-line no-console
41+ logger . error = msg => log ( 3 , ' error' , msg ) ; // eslint-disable-line no-console
3542
3643 return logger ;
3744}
0 commit comments