add cronjob.js | add deleting old log

This commit is contained in:
lucaspalomodevelop 2022-03-12 16:21:47 +01:00
parent bb6bbd7369
commit 592962530d
5 changed files with 83 additions and 10 deletions

View File

@ -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"
}
}

34
src/helper/cronjobs.js Normal file
View File

@ -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;

View File

@ -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 };

View File

@ -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();

View File

@ -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==