forked from nuagenetworks/js-bambou
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLogger.js
79 lines (64 loc) · 1.69 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
77
78
79
import NUObject from 'service/NUObject';
import dateformat from 'dateformat';
const LogLevels = ["fatal", "error", "warn", "info", "debug", "trace"];
let _instance;
class _Logger extends NUObject {
constructor(level, ...args) {
super(...args);
this.defineProperties({
level: 3,
});
if (level && LogLevels[level]) {
this.level = level;
}
}
log(message) {
if (this.level >= 4) {
this._logToConsole(message);
}
}
fatal(message) {
this._logToConsole(message, 0);
}
error(message) {
this._logToConsole(message, 1);
}
warn(message) {
this._logToConsole(message, 2);
}
info(message) {
this._logToConsole(message, 3);
}
debug(message) {
this._logToConsole(message, 4);
}
trace(message) {
this._logToConsole(message, 5);
}
_logToConsole(message, level) {
if (typeof console !== "undefined")
{
const logLevel = level && LogLevels[level];
const formattedMessage = `${dateformat(new Date(), "yyyy-mm-dd, HH:MM:ss.l")} [${logLevel || "debug"}] ${message}`;
if (level && level <= this.level && logLevel && console[logLevel]){
console[logLevel](formattedMessage);
}
else if (!level && console.log) {
console.log(formattedMessage)
}
}
}
}
const Logger = (level) => {
if (! _instance ) {
_instance = new _Logger(level);
}
return _instance;
}
export const getLogger = () => {
if (!_instance) {
return Logger();
}
return _instance;
}
export default Logger;