aboutsummaryrefslogtreecommitdiff
path: root/src/Logger
diff options
context:
space:
mode:
authorJakob Stendahl <jakob.stendahl@outlook.com>2021-09-19 19:43:11 +0200
committerJakob Stendahl <jakob.stendahl@outlook.com>2021-09-19 19:43:11 +0200
commit7bdce37fd3f18e2712e18c4e2c64cac69af0aca1 (patch)
treeb7ad3f1cca92e2dfd2664ae9e65652bd03ff58b2 /src/Logger
parente6880cd8ccf82d993f222cb14b4860581654acb8 (diff)
downloadLuxcena-Neo-7bdce37fd3f18e2712e18c4e2c64cac69af0aca1.tar.gz
Luxcena-Neo-7bdce37fd3f18e2712e18c4e2c64cac69af0aca1.zip
:boom: Introduce new UI based on svelte, and rewrite a lot of the node app and the NeoRuntime
Diffstat (limited to 'src/Logger')
-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"); }
+};