const fs = require("fs") const path = require("path") var logStream = null var logInstance = new Map() setup() function getDate(formated) { var date = new Date() // [Date Format] - Format de la date var gmonth = date.getMonth() var gday = date.getDate() var gHour = date.getHours() var gMinute = date.getMinutes() var gSecondes = date.getSeconds() if(date.getMonth() + 1 <= 10) { gmonth = "0" + (date.getMonth() + 1) } if(date.getDate() + 1 <= 10) { gday = "0" + date.getDate() } if(date.getHours() + 1 <= 10) { gHour = "0" + date.getHours() } if(date.getMinutes() + 1 <= 10) { gMinute = "0" + date.getMinutes() } if(date.getSeconds() + 1 <= 10) { gSecondes = "0" + date.getSeconds() } if(!formated) { return gday + "/" + gmonth + " - " + gHour + "h" + "-" + gMinute + "m" + "-" + gSecondes + "s" } else { return date.getFullYear() + "-" + gmonth + "-" + gday + "-" + gHour + "h" + "-" + gMinute + "m" + "-" + gSecondes + "s" } } function setup() { if(!fs.existsSync(__dirname + path.sep + "logs" + path.sep)) { fs.mkdir(__dirname + path.sep + "logs", (err) => { if(!err) { console.log("[Logs] - Dossier de logs crée ! !") } else { console.log("[Logs] -Erreur d'écriture par manque de permission ") console.log(err) } }) } logStream = fs.createWriteStream(__dirname + path.sep + "logs" + path.sep + getDate(true) + ".log", { flags: 'a' }); logStream.write("[" + require("../../package.json").name + "@"+ require("../../package.json").version + "] - [" + getDate(true) + "]" + "\n") logStream.write("Subsonics-Web by Raphix" + "\n") logStream.write("----------------------------------------------------------------" + "\n") process.on('uncaughtException', (err) => { console.error("["+ "FATAL" + "] - The application has encountered an error ! Please Restart ! #E = " + err + "\n") console.error(err) logStream.write("[" + getDate() + "] - ["+ "FATAL" + "] - The application has encountered an error ! Please Restart ! #E = " + err + "\n") logStream.end( "["+ "UNCAUGHT_EXCEPTION" + "]" + " - [END OF LOGS] - [" + getDate() + ']') logStream.close() }); process.on('beforeExit', (err) => { logStream.end( "["+ "BEFORE_EXIT" + "]" + " - [END OF LOGS] - [" + getDate(true) + ']') logStream.close() }); } module.exports.getInstance = function (name) { if(logInstance.has(name)) { return logInstance.get(name) } else { var logtext = "[Logs] - [ERROR] - '" + name + "' n'est pas enregistré en tant qu'instance de log !" logStream.write("[" + getDate() + "] - " + logtext + "\n") console.log(logtext) return null } } module.exports.LogType = class { constructor(typeName) { this.type = typeName; this.steps = new Map() this.step = this.initializeStep() logInstance.set(typeName, this) } log(txt) { var logtext = "[" + this.type + "] - [INFO] - " + txt logStream.write("[" + getDate() + "] - " + logtext + "\n") console.log(logtext) } warn(txt) { var logtext = "[" + this.type + "] - [WARN] - " + txt logStream.write("[" + getDate() + "] - " + logtext + "\n") console.log(logtext) } error(txt) { var logtext = "[" + this.type + "] - [ERROR] - " + txt logStream.write("[" + getDate() + "] - " + logtext + "\n") console.log(logtext) } initializeStep() { const parent = this; return { init: function(id, desc) { parent.steps.set(id, desc) var logtext = "[" + parent.type + "] - [INFO] - [STEP] - " + desc + " - En cours ..." logStream.write("[" + getDate() + "] - " + logtext + "\n") console.log(logtext) }, end: function(id) { if(parent.steps.has(id)) { var logtext = "[" + parent.type + "] - [INFO] - [STEP] - " + parent.steps.get(id) + " - Terminé !" logStream.write("[" + getDate() + "] - " + logtext + "\n") console.log(logtext) parent.steps.delete(id) } else { var logtext = "[" + parent.type + "] - [WARN] - [STEP] - '" + id + "' n'est pas enregistré en tant qu'étape !" logStream.write("[" + getDate() + "] - " + logtext + "\n") console.log(logtext) } }, error: function(id, errorDesc) { if(parent.steps.has(id)) { var logtext = "[" + parent.type + "] - [ERROR] - [STEP] - " + parent.steps.get(id) + " - Une erreur a été rencontré dans l'étape ! : #E = " + errorDesc logStream.write("[" + getDate() + "] - " + logtext + "\n") console.log(logtext) parent.steps.delete(id) } else { var logtext = "[" + parent.type + "] - [WARN] - [STEP] - '" + id + "' n'est pas enregistré en tant qu'étape !" logStream.write("[" + getDate() + "] - " + logtext + "\n") console.log(logtext) } } } } }