You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

147 lines
4.1 KiB

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