From 592962530db4c18f6efa1ddb68b6cb16a4966b6a Mon Sep 17 00:00:00 2001 From: lucaspalomodevelop Date: Sat, 12 Mar 2022 16:21:47 +0100 Subject: [PATCH] add cronjob.js | add deleting old log --- package.json | 7 +++++-- src/helper/cronjobs.js | 34 ++++++++++++++++++++++++++++++++++ src/helper/logger.js | 30 ++++++++++++++++++++++++------ src/index.js | 6 +++++- yarn.lock | 16 +++++++++++++++- 5 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 src/helper/cronjobs.js diff --git a/package.json b/package.json index 0b3c951..904580c 100644 --- a/package.json +++ b/package.json @@ -9,11 +9,14 @@ }, "dependencies": { "body-parser": "^1.19.2", - "chai": "^4.3.6", "cookie-parser": "^1.4.6", "cors": "^2.8.5", + "cron": "^1.8.2", "express": "^4.17.3", - "mocha": "^9.2.1", "moment": "^2.29.1" + }, + "devDependencies": { + "chai": "^4.3.6", + "mocha": "^9.2.1" } } diff --git a/src/helper/cronjobs.js b/src/helper/cronjobs.js new file mode 100644 index 0000000..1995c1b --- /dev/null +++ b/src/helper/cronjobs.js @@ -0,0 +1,34 @@ +var CronJob = require("cron").CronJob; +let jobs = {}; +let jobsArray = []; + +let logger = require("./logger"); + +jobs.addJob = function (cron, func) { + let job = new CronJob(cron, func, null, true, "Europe/Berlin"); + jobsArray.push(job); + return job; +}; + +jobs.addJob("* 1 * * * *", function () { + console.log("Cronjob"); + logger.DeleteOldLogs(); +}); + +jobs.Start = function () { + console.log("Starting Cronjobs"); + jobsArray.forEach((job) => { + job.start(); + }); +}; + +jobs.Stop = function () { + console.log("Stopping Cronjobs"); + jobsArray.forEach((job) => { + job.stop(); + }); +}; + +jobs.Start(); + +module.exports = jobs; diff --git a/src/helper/logger.js b/src/helper/logger.js index e5731e6..e0a8e1b 100644 --- a/src/helper/logger.js +++ b/src/helper/logger.js @@ -1,31 +1,49 @@ var fs = require("fs"); var util = require("util"); var moment = require("moment"); +const { monitorEventLoopDelay } = require("perf_hooks"); let name; var log_file; updateData(); var log_stdout = process.stdout; function updateData() { - name = "log_" + moment().format("YYYY-MM-DD") + ".txt"; + name = "log_" + moment().format("YYYY-MM-DD") + ".log"; log_file = fs.createWriteStream(__dirname + "/../../logs/" + name, { flags: "a", }); } + console.log = function (d) { - name = "log_" + moment().format("YYYY-MM-DD") + ".txt"; + name = "log_" + moment().format("YYYY-MM-DD") + ".log"; d = `[ ${moment().format("YYYY-MM-DD HH:mm:ss")}] ${util.format(d)} \n`; log_file.write(d); log_stdout.write(d); }; + console.error = (d) => { console.log("[ERROR] " + util.format(d)); }; -// function getCurrentlog() { -// return fs.readFileSync(__dirname + "/../../logs/" + name, "utf8").toString(); -// } +function DeleteOldLogs(olderThan = 30) { + let files = fs.readdirSync(__dirname + "/../../logs/"); + for (file in files) { + if (!fs.existsSync(__dirname + "/../../logs/" + file)) { + continue; + } + console.log(file); + let date = file.split("_")[1].split(".")[0]; + if ( + moment(date, "YYYY-MM-DD").isBefore(moment().subtract(olderThan, "days")) + ) { + fs.unlinkSync(__dirname + "/../../logs/" + file); + console.log( + "Deleted " + file + " because it is older than " + olderThan + " days" + ); + } + } +} function getCurrentlog(num = -1) { if (num > 0) { @@ -41,4 +59,4 @@ function getCurrentlog(num = -1) { } } -module.exports = { getCurrentlog }; +module.exports = { getCurrentlog, DeleteOldLogs }; diff --git a/src/index.js b/src/index.js index 2d5b189..3e74efa 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,7 @@ -require("./helper/logger"); +let logger = require("./helper/logger"); let conf = require("./helper/conf")(); let websrv = require("./websrv")(conf); +let jobs = require("./helper/cronjobs"); /** * @description @@ -15,6 +16,9 @@ websrv.slisten((host, port) => { * Stops the server */ process.on("SIGINT", () => { + logger.DeleteOldLogs(); + console.log("Cronjob Beenden ..."); + jobs.Stop(); console.log("Web-Server Beenden ..."); websrv.close(); process.exit(); diff --git a/yarn.lock b/yarn.lock index 59fff0f..0c5d771 100644 --- a/yarn.lock +++ b/yarn.lock @@ -221,6 +221,13 @@ cors@^2.8.5: object-assign "^4" vary "^1" +cron@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/cron/-/cron-1.8.2.tgz#4ac5e3c55ba8c163d84f3407bde94632da8370ce" + integrity sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg== + dependencies: + moment-timezone "^0.5.x" + debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -615,7 +622,14 @@ mocha@^9.2.1: yargs-parser "20.2.4" yargs-unparser "2.0.0" -moment@^2.29.1: +moment-timezone@^0.5.x: + version "0.5.34" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" + integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== + dependencies: + moment ">= 2.9.0" + +"moment@>= 2.9.0", moment@^2.29.1: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==