ghoullier
1/31/2015 - 6:28 AM

Implement log level in AngularJS http://plnkr.co/edit/m1PrQhZugCEz8pIsEuTE

Implement log level in AngularJS http://plnkr.co/edit/m1PrQhZugCEz8pIsEuTE

;(function() {
  angular
    .module('ngLogger', ['ng'])
    .provider('logger', LoggerProvider)
    
  function LoggerProvider() {
    this.levels = ['log', 'trace', 'debug', 'info', 'warn', 'error']
    this.logLevel = 0
  }
  LoggerProvider.prototype.setLogLevel = setLogLevel
  LoggerProvider.prototype.$get = $get

  function setLogLevel(level) {
    var index = this.levels.indexOf(level)
    this.logLevel =  index > -1 ? index : 0
  }

  $get.$inject = ['$log']
  function $get($log) {
    var logger = {}
    this.levels.forEach(function onEachLogLevel(level) {
      logger[level] = (this.levels.indexOf(level) >= this.logLevel) ? $log[level] : angular.noop
    }.bind(this));
    return logger
  }
}())
;(function() {
  angular
   .module('ngLoggerExample', ['ngLogger'])
   .config(configureNgLogger)
   .run(runNgLogger)
   
  configureNgLogger.$inject = ['loggerProvider']
  function configureNgLogger(loggerProvider) {
    loggerProvider.setLogLevel('warn')
  }
  
  runNgLogger.$inject = ['logger']
  function runNgLogger(logger) {
    logger.log('log message will not appear')
    logger.warn('warn message will appear')
  }
}())