aboutsummaryrefslogtreecommitdiff
path: root/src/Logger/index.js
diff options
context:
space:
mode:
authorJakob Stendahl <14180120+JakobST1n@users.noreply.github.com>2021-10-11 20:02:04 +0200
committerGitHub <noreply@github.com>2021-10-11 20:02:04 +0200
commitc67531161e56488166a33232f87566309ba8676e (patch)
tree846e59a020e80bea48557d5a06af5728e44961ff /src/Logger/index.js
parente6880cd8ccf82d993f222cb14b4860581654acb8 (diff)
parentc1b6eec770b885a9829e1f62bad5cc99389ca429 (diff)
downloadLuxcena-Neo-c67531161e56488166a33232f87566309ba8676e.tar.gz
Luxcena-Neo-c67531161e56488166a33232f87566309ba8676e.zip
Merge pull request #24 from JakobST1n/rebuild
v1.0.0
Diffstat (limited to 'src/Logger/index.js')
-rw-r--r--src/Logger/index.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/Logger/index.js b/src/Logger/index.js
new file mode 100644
index 0000000..2ee216a
--- /dev/null
+++ b/src/Logger/index.js
@@ -0,0 +1,79 @@
+let fse = require("fs-extra");
+
+const level = {
+ EMERG: "EMERGENCY",
+ ALERT: "ALERT",
+ CRIT: "CRITICAL",
+ ERROR: "ERROR",
+ WARNING: "WARNING",
+ NOTICE: "NOTICE",
+ INFO: "INFO",
+ DEBUG: "DEBUG",
+
+ ACCESS: ""
+};
+
+
+Object.defineProperty(String.prototype, "lPad", {
+ value: function lPad(len, chr="0") {
+ str = this;
+ var i = -1;
+ if (!chr && chr !== 0) chr = ' ';
+ len = len - this.length;
+ while (++i < len) {
+ str = chr + str;
+ }
+ return str;
+ },
+ writeable: true,
+ configurable: true
+});
+
+
+function getTimeStamp() {
+ let CDate = new Date();
+ let day = CDate.getDate().toString().lPad(2);
+ let month = (CDate.getMonth() + 1).toString().lPad(2); // +1 because js starts to count at 0
+ let year = CDate.getFullYear();
+ let hour = CDate.getHours().toString().lPad(2);
+ let min = CDate.getMinutes().toString().lPad(2);
+ let sec = CDate.getSeconds().toString().lPad(2);
+ let ms = Math.round(CDate.getMilliseconds() / 10).toString().lPad(2); // divide by 10 to make the last digit decimal, then round.
+
+ return `${day}.${month}.${year}-${hour}:${min}:${sec}.${ms}`;
+}
+
+
+function log(object, logLevel=level.DEBUG, file="/lux-neo.log") {
+ fse.ensureFileSync(__logdir + file);
+
+ let formattedLogString = `[${getTimeStamp()}] ${logLevel} ${object}`;
+ console.log(formattedLogString); // @TODO: This should probably be removed, used for dev currently
+
+
+ fse.appendFile(
+ __logdir + "/lux-neo.log",
+ formattedLogString + '\n'
+ ).catch(err => {
+ console.log("EMERGENCY Could not write to log-file 'lux-neo.log'...");
+ console.log("DEBUG FileWriteError: " + err)
+ });
+
+ if (__event != undefined) {
+ __event.emit("logger", logLevel, object);
+ }
+}
+
+module.exports = {
+ level,
+ log,
+ emerg: (object) => { log(object, level.EMERG); },
+ alert: (object) => { log(object, level.ALERT); },
+ crit: (object) => { log(object, level.CRIT); },
+ error: (object) => { log(object, level.ERROR); },
+ warning: (object) => { log(object, level.WARNING); },
+ notice: (object) => { log(object, level.NOTICE); },
+ info: (object) => { log(object, level.INFO); },
+ debug: (object) => { log(object, level.DEBUG); },
+ access: (object) => { log(object, level.ACCESS, file="/access.log"); }
+};