UNPKG

2.11 kBJavaScriptView Raw
1
2const DebugLevel = {
3 LOG: 1,
4 DEBUG: 2,
5 WARN: 3,
6 ERROR: 4,
7 FATAL: 5,
8 NONE: 9
9}
10
11class Debugger {
12
13 set logLevel( logLevel ) {
14 this._logLevel = logLevel
15 this._debug.enabled = logLevel < DebugLevel.NONE
16 }
17
18 constructor( namespace ) {
19
20 this._logLevel = DebugLevel.NONE
21
22 if (process.env.DEBUG) {
23 if (process.env.DEBUG.indexOf(`${namespace}:log`) !== -1) {
24 this._logLevel = DebugLevel.LOG
25 }
26 else if (process.env.DEBUG.indexOf(`${namespace}:debug`) !== -1) {
27 this._logLevel = DebugLevel.DEBUG
28 }
29 else if (process.env.DEBUG.indexOf(`${namespace}:warn`) !== -1) {
30 this._logLevel = DebugLevel.WARN
31 }
32 else if (process.env.DEBUG.indexOf(`${namespace}:error`) !== -1) {
33 this._logLevel = DebugLevel.ERROR
34 }
35 else if (process.env.DEBUG.indexOf(`${namespace}:fatal`) !== -1) {
36 this._logLevel = DebugLevel.FATAL
37 }
38 }
39
40 this._debug = require("debug")(namespace)
41 this._debug.enabled = this._logLevel < DebugLevel.NONE
42
43 this._requestCounting = 0
44 this._requestTime = {}
45 }
46
47 log(...msg) {
48 if (this._logLevel <= DebugLevel.LOG) {
49 this._debug(...msg)
50 }
51 }
52
53 debug(...msg) {
54 if (this._logLevel <= DebugLevel.DEBUG) {
55 this._debug(...msg)
56 }
57 }
58
59 warn(...msg) {
60 if (this._logLevel <= DebugLevel.WARN) {
61 this._debug(...msg)
62 }
63 }
64
65 error(...msg) {
66 if (this._logLevel <= DebugLevel.ERROR) {
67 this._debug(...msg)
68 }
69 }
70
71 requestStart(...msg) {
72 let startTime = +new Date()
73 let requestId = 'R.' + this._requestCounting++
74
75 this._requestTime[requestId] = startTime
76
77 if (this._logLevel <= DebugLevel.DEBUG) {
78 this._debug("Requst", requestId)
79 }
80
81 return requestId
82 }
83
84 requestEnd(requestId, action, ...msg) {
85 if (this._logLevel <= DebugLevel.DEBUG) {
86 let startTime = this._requestTime[requestId]
87 let elapsed = (+new Date()) - startTime
88
89 delete this._requestTime[requestId]
90
91 this._debug("Response", requestId, action, elapsed + 'ms' )
92 }
93 }
94}
95
96module.exports = Debugger