-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathLog.js
83 lines (73 loc) · 1.78 KB
/
Log.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
80
81
82
83
import fs from 'fs';
export default class Log {
constructor() {
this.fsLog = fs.createWriteStream('server.log', {'flags': 'a'});
this.level = 5;
}
static get LEVEL_ERROR() { return 0; }
static get LEVEL_WARN() { return 1; }
static get LEVEL_INFO() { return 2; }
static get LEVEL_HTTP() { return 3; }
static get LEVEL_VERBOSE() { return 4; }
static get LEVEL_DEBUG() { return 5; }
static get LEVEL_SILLY() { return 6; }
static get Level() {
return Object.freeze({
ERROR: 0,
WARN: 1,
INFO: 2,
HTTP: 3,
VERBOSE: 4,
DEBUG: 5,
SILLY: 6
});
}
static get LevelString() {
return Object.freeze({
0: 'ERROR',
1: 'WARN',
2: 'INFO',
3: 'HTTP',
4: 'VERBOSE',
5: 'DEBUG',
6: 'SILLY'
});
}
logWrite(line) {
this.fsLog.write(line+"\n");
console.log(line);
}
log(level, message, ...obj) {
if(!Number.isInteger(level)) {
level = Log.Level[level.toUpperCase()];
}
if(level > this.level) return;
let line = new Date().toISOString() + ` ${Log.LevelString[level].padEnd(5)} | ${message}`;
if(obj && obj.length > 0) line += ' ' + JSON.stringify(obj);
this.logWrite(line);
}
/**
* Write to log with Level DEBUG
* @param {string} message
* @param {any[]} obj
*/
debug(message, ...obj) { this.log(Log.LEVEL_DEBUG, message, ...obj); }
/**
* Write to log with Level INFO
* @param {string} message
* @param {any[]} obj
*/
info(message, ...obj) { this.log(Log.LEVEL_INFO, message, ...obj); }
/**
* Write to log with Level WARN
* @param {string} message
* @param {any[]} obj
*/
warn(message, ...obj) { this.log(Log.LEVEL_WARN, message, ...obj); }
/**
* Write to log with Level ERROR
* @param {string} message
* @param {any[]} obj
*/
error(message, ...obj) { this.log(Log.LEVEL_ERROR, message, ...obj); }
}