/
logger.js
executable file
·76 lines (75 loc) · 2.53 KB
/
logger.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var logger = function(){
var loggedFunctionArray = [];
var loggerObj = {
enableLog:false,
showTiming :false,
log: function(){
var prefix = "";
for (var i = 1; i < loggedFunctionArray.length; i++)
prefix += "\t";
var args = [prefix + loggedFunctionArray[loggedFunctionArray.length - 1] + " : "];
Array.prototype.push.apply(args,arguments);
console.log.apply(console,args);
},//log
warn: function(){
var prefix = "";
for (var i = 1; i < loggedFunctionArray.length; i++)
prefix += "\t";
var args = [prefix + loggedFunctionArray[loggedFunctionArray.length - 1] + " : "];
Array.prototype.push.apply(args,arguments);
console.warn.apply(console,args);
},//warn
error: function(){
var prefix = "";
for (var i = 1; i < loggedFunctionArray.length; i++)
prefix += "\t";
var args = [prefix + loggedFunctionArray[loggedFunctionArray.length - 1] + " : "];
Array.prototype.push.apply(args,arguments);
console.warn.apply(console,args);
},//error
trace: function(){
console.trace();
},//trace
dir: function(obj){
console.dir(obj);
},//dir
assert:function(){
console.assert.apply(console,arguments);
},//assert
count:function(){
console.count.apply(console,arguments);
},//assert
profile:function(){
console.profile.apply(console,arguments);
},//profile
profileEnd:function(){
console.profileEnd();
},//profileEnd
startLog: function(functionName){
loggedFunctionArray.push(functionName);
console.group(functionName);
this.log("Start");
if(this.showTiming === true && console.time)
console.time(functionName);
},//startLog
endLog: function(){
this.log("End");
if(this.showTiming === true && console.time)
console.timeEnd(loggedFunctionArray.pop());
else
loggedFunctionArray.pop();
console.groupEnd();
}//endLog
};//loggerObj
//add a switch to all logger functions.
for(attr in loggerObj)
if(loggerObj.hasOwnProperty(attr) && typeof loggerObj[attr] == 'function'){
loggerObj[attr] = function(func){
return function(){
if (this.enableLog === true && window.console != undefined)
func.apply(this,arguments);
};
}(loggerObj[attr]);
};
return loggerObj;
}();