-
Notifications
You must be signed in to change notification settings - Fork 0
/
debug.js
94 lines (79 loc) · 3.21 KB
/
debug.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
84
85
86
87
88
89
90
91
92
93
94
const Utils = require('./utils.js');
/**
* Summary: effectively a wrapper for 'console' but allows us to customise the stdout output of the system.
* One of the most useful features is that of each log output having the filename creating the output,
* which is a simple feature but not available in the normal console.log feature. There is also the potential
* for all logs to be routed elsewhere, for example to the API which would not be possible in the normal
* console.log function.
*/
module.exports = {
showErrors: true,
showWarnings: true,
showLogs: true,
savesHistoricData: true,
showTimestamp: true,
processes: [],
error: function() {
if (this.showErrors) {
let filename = this.getCallerFile().split("/");
filename = filename[filename.length - 1];
let message;
if (this.showTimestamp) {
message = [`[ERROR - ${filename} - ${Utils.getFormattedTimestamp()}]: `].concat(Object.values(arguments));
} else {
message = [`[ERROR - ${filename}]: `].concat(Object.values(arguments));
}
console.log.apply(null, message);
/*process.send({
message: Constants.Enums.INTER_PROCESS_MESSAGES.NEW_LOG,
data: message.join(" ")
})*/
}
},
warning: function() {
if (this.showWarnings) {
let filename = this.getCallerFile().split("/");
filename = filename[filename.length - 1];
let message;
if (this.showTimestamp) {
message = [`[WARNING - ${filename} - ${Utils.getFormattedTimestamp()}]: `].concat(Object.values(arguments));
} else {
message = [`[WARNING - ${filename}]: `].concat(Object.values(arguments));
}
console.log.apply(null, message);
}
},
log: function() {
if (this.showLogs) {
let filename = this.getCallerFile().split("/");
filename = filename[filename.length - 1];
let message;
if (this.showTimestamp) {
message = [`[LOG - ${filename} - ${Utils.getFormattedTimestamp()}]: `].concat(Object.values(arguments));
} else {
message = [`[LOG - ${filename}]: `].concat(Object.values(arguments));
}
console.log.apply(null, message);
/*process.send({
message: Constants.Enums.INTER_PROCESS_MESSAGES.NEW_LOG,
data: message.join(" ")
})*/
}
},
getCallerFile: function(){
var originalFunc = Error.prepareStackTrace;
var callerfile;
try {
var err = new Error();
var currentfile;
Error.prepareStackTrace = function (err, stack) { return stack; };
currentfile = err.stack.shift().getFileName();
while (err.stack.length) {
callerfile = err.stack.shift().getFileName();
if(currentfile !== callerfile) break;
}
} catch (e) {}
Error.prepareStackTrace = originalFunc;
return callerfile;
}
}