/**
|
|
* 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);
|