|
|
/** * angular-simple-logger * * @version: 0.1.7 * @author: Nicholas McCready * @date: Tue Jan 26 2016 10:15:01 GMT-0500 (EST) * @license: MIT */
(function (window, angular){ angular.module('nemLogging', []);
angular.module('nemLogging').provider('nemDebug', function (){ var ourDebug = null; this.$get = function(){ //avail as service
return ourDebug; };
//avail at provider, config time
this.debug = ourDebug;
return this; }); var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, slice = [].slice;
angular.module('nemLogging').provider('nemSimpleLogger', [ 'nemDebugProvider', function(nemDebugProvider) { var LEVELS, Logger, _debugCache, _fns, _isValidLogObject, _maybeExecLevel, _wrapDebug, i, key, len, nemDebug, val; nemDebug = nemDebugProvider.debug; _debugCache = {}; _fns = ['debug', 'info', 'warn', 'error', 'log']; LEVELS = {}; for (key = i = 0, len = _fns.length; i < len; key = ++i) { val = _fns[key]; LEVELS[val] = key; } _maybeExecLevel = function(level, current, fn) { if (level >= current) { return fn(); } }; _isValidLogObject = function(logObject) { var isValid, j, len1; isValid = false; if (!logObject) { return isValid; } for (j = 0, len1 = _fns.length; j < len1; j++) { val = _fns[j]; isValid = (logObject[val] != null) && typeof logObject[val] === 'function'; if (!isValid) { break; } } return isValid; };
/* Overide logeObject.debug with a nemDebug instance see: https://github.com/visionmedia/debug/blob/master/Readme.md
*/ _wrapDebug = function(namespace, logObject) { var debugInstance, j, len1, newLogger; if (_debugCache[namespace] == null) { _debugCache[namespace] = nemDebug(namespace); } debugInstance = _debugCache[namespace]; newLogger = {}; for (j = 0, len1 = _fns.length; j < len1; j++) { val = _fns[j]; newLogger[val] = val === 'debug' ? debugInstance : logObject[val]; } return newLogger; }; Logger = (function() { function Logger($log1) { var fn1, j, len1, level, logFns; this.$log = $log1; this.spawn = bind(this.spawn, this); if (!this.$log) { throw 'internalLogger undefined'; } if (!_isValidLogObject(this.$log)) { throw '@$log is invalid'; } this.doLog = true; logFns = {}; fn1 = (function(_this) { return function(level) { logFns[level] = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; if (_this.doLog) { return _maybeExecLevel(LEVELS[level], _this.currentLevel, function() { var ref; return (ref = _this.$log)[level].apply(ref, args); }); } }; return _this[level] = logFns[level]; }; })(this); for (j = 0, len1 = _fns.length; j < len1; j++) { level = _fns[j]; fn1(level); } this.LEVELS = LEVELS; this.currentLevel = LEVELS.error; }
Logger.prototype.spawn = function(newInternalLogger) { if (typeof newInternalLogger === 'string') { if (!_isValidLogObject(this.$log)) { throw '@$log is invalid'; } if (!nemDebug) { throw 'nemDebug is undefined this is probably the light version of this library sep debug logggers is not supported!'; } return _wrapDebug(newInternalLogger, this.$log); } return new Logger(newInternalLogger || this.$log); };
return Logger;
})(); this.decorator = [ '$log', function($delegate) { var log; log = new Logger($delegate); log.currentLevel = LEVELS.debug; return log; } ]; this.$get = [ '$log', function($log) { return new Logger($log); } ]; return this; } ]);
})(window, angular);
|