forked from lfabl/error-printer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
75 lines (62 loc) · 1.73 KB
/
index.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
const fs = require("fs");
const moment = require("moment");
let MAIN_DIRECTORY = __dirname.replace(/\\/g, '/').replace("/node_modules/error-printer", "");
let OPTIONS = {
logFileName: "error_log",
messageTitle: "Error message",
codeTitle: "Error code",
datePureTitle: "Error Date ( Pure )",
dateFormattedTitle: "Error Date ( Formatted )",
formattedDateConfig: "DD MMMM YYYY hh:mm A",
isWritePureDate: true,
isWriteFormattedDate: true
};
const setMainDirectory = (directory) => {
MAIN_DIRECTORY = directory;
}
const setOptions = (options) => {
OPTIONS = {
...OPTIONS,
...options
}
};
const error_log = ({
options,
message,
code
}) => {
const _options = {
...OPTIONS,
...options
};
// Error file exists control:
const fileExists = fs.existsSync(MAIN_DIRECTORY + `/${_options.logFileName}`);
// If error file do not exists, it will be create:
if (!fileExists) {
fs.writeFileSync(MAIN_DIRECTORY + `/${_options.logFileName}`, "");
}
// Error message:
let errorData = `
${_options.messageTitle}: ${message}
`;
if (code) {
errorData += `${_options.codeTitle}: ${code}\n`;
}
if (_options.isWritePureDate) {
errorData += `${_options.datePureTitle}: ${new Date().toISOString()}\n`;
}
if (_options.isWriteFormattedDate) {
errorData += `${_options.dateFormattedTitle}: ${moment(new Date()).format(_options.formattedDateConfig)}\n`;
}
errorData += `\n`;
// Write new error message to error_log file.
fs.appendFile(MAIN_DIRECTORY + `/${_options.logFileName}`, errorData, err => {
if (err) {
console.error(err);
return err;
}
});
};
module.exports = error_log;
module.exports.setMainDirectory = setMainDirectory;
module.exports.setOptions = setOptions;