-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger.js
More file actions
125 lines (99 loc) · 2.1 KB
/
logger.js
File metadata and controls
125 lines (99 loc) · 2.1 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/**
* logger.js
*
* Created by Daniel Wang
* Sep 2015
*/
var colors = require('colors/safe');
function Logger(tip, title) {
this.tip = tip;
this.title = title;
addSpeaker(Logger.speakers, tip);
addSpeaker(Logger.allSpeakers, tip);
}
Logger.LOG_LEVEL = {
ALL: 12,
DEBUG: 8,
LOG: 4,
INFO: 4,
ERROR: 1,
MUTE: 0
}
Logger.speakers = new Array();
Logger.allSpeakers = new Array();
Logger.logLevel = Logger.LOG_LEVEL.ALL;
function addSpeaker(list, name) {
var i;
var exist = false;
for (i = 0; i < list.length; i++) {
if (list[i] == name) {
exist = true;
}
}
if (! exist) {
list.push(name);
}
}
Logger.isBelowCurrentLevel = function(l) {
return l <= Logger.logLevel;
}
Logger.couldSpeak = function(tip) {
var i;
for (i = 0; i < Logger.speakers.length; i++) {
if (Logger.speakers[i] == tip) {
return true;
}
}
return false;
}
Logger.prototype.print = function(s) {
var speakerName = '';
if (Logger.speakers.length > 1) {
speakerName = '[' + this.tip + '] ';
}
console.log(speakerName + this.title + ':' + s);
}
Logger.prototype.speak = function(s) {
if (Logger.couldSpeak(this.tip)) {
this.print(s);
}
}
/**
* Public interfaces for Logger
*/
Logger.prototype.debug = function(s) {
if (Logger.isBelowCurrentLevel(Logger.LOG_LEVEL.DEBUG)) {
this.speak(colors.green(' <DEBUG> ' + s));
}
}
Logger.prototype.log = function(s) {
if (Logger.isBelowCurrentLevel(Logger.LOG_LEVEL.LOG)) {
this.speak(s);
}
}
Logger.prototype.info = function(s) {
if (Logger.isBelowCurrentLevel(Logger.LOG_LEVEL.INFO)) {
this.speak(colors.grey(' <INFO> ' + s));
}
}
Logger.prototype.error = function(s) {
if (Logger.isBelowCurrentLevel(Logger.LOG_LEVEL.ERROR)) {
this.speak(colors.red(' <ERROR> ' + s));
}
}
Logger.prototype.muteAll = function() {
Logger.speakers = [];
}
Logger.prototype.muteOthers = function() {
Logger.speakers = [this.tip];
}
Logger.prototype.showAll = function() {
Logger.speakers = Logger.allSpeakers;
}
Logger.prototype.show = function(a) {
Logger.speakers = a;
}
Logger.prototype.setLogLevel = function(lvl) {
Logger.logLevel = lvl;
}
module.exports = Logger;