Skip to content

Commit

Permalink
refactored log remover for no reason
Browse files Browse the repository at this point in the history
  • Loading branch information
NullDev committed Aug 4, 2023
1 parent d564582 commit b148d2d
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 44 deletions.
94 changes: 53 additions & 41 deletions src/crons/removeOldLogs.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,60 +7,72 @@ import Log from "../util/log.js";
// ========================= //

/**
* Get date from filename
* Handle log cleanups and other operations
*
* @param {string} filename
* @return {Number | null}
* @class LogHandler
*/
const getDateFromFilename = function(filename){
// Format: PROJECTNAME-DD-MM-YYYY-output.log and PROJECTNAME-DD-MM-YYYY-errors.log
const regex = /(\d{2})-(\d{2})-(\d{4})/;
const match = filename.match(regex);
class LogHandler {
/**
* Get date from filename
*
* @static
* @param {string} filename
* @return {Number | null}
* @memberof LogHandler
*/
static #getDateFromFilename(filename){
// Format: PROJECTNAME-DD-MM-YYYY-output.log and PROJECTNAME-DD-MM-YYYY-errors.log
const regex = /(\d{2})-(\d{2})-(\d{4})/;
const match = filename.match(regex);

if (match){
const day = Number(match[1]);
const month = Number(match[2]);
const year = Number(match[3]);
if (match){
const day = Number(match[1]);
const month = Number(match[2]);
const year = Number(match[3]);

const dateX = new Date(year, month - 1, day);
const date = new Date(dateX.getTime() + Math.abs(dateX.getTimezoneOffset() * 60000));
const dateX = new Date(year, month - 1, day);
const date = new Date(dateX.getTime() + Math.abs(dateX.getTimezoneOffset() * 60000));

return date.getTime();
return date.getTime();
}
return null;
}
return null;
};

/**
* Remove logs that are older than 7 days
*/
const removeOldLogs = async() => {
Log.wait("[CRON] Deleting old logs...");
/**
* Remove logs that are older than 7 days
*
* @static
* @memberof LogHandler
*/
static async removeOldLogs(){
Log.wait("[CRON] Deleting old logs...");

let deletedLogs = 0;
let deletedLogs = 0;

const logDir = path.resolve("./logs");
const eLogDir = path.resolve("./logs/errors");
const logDir = path.resolve("./logs");
const eLogDir = path.resolve("./logs/errors");

const logs = (await fs.readdir(logDir)).filter(f => f.endsWith(".log")).map(f => path.resolve(logDir, f));
const eLogs = (await fs.readdir(eLogDir)).filter(f => f.endsWith(".log")).map(f => path.resolve(eLogDir, f));
const logs = (await fs.readdir(logDir)).filter(f => f.endsWith(".log")).map(f => path.resolve(logDir, f));
const eLogs = (await fs.readdir(eLogDir)).filter(f => f.endsWith(".log")).map(f => path.resolve(eLogDir, f));

const allLogs = [...logs, ...eLogs];
const allLogs = [...logs, ...eLogs];

const sevenDaysAgoX = new Date();
sevenDaysAgoX.setDate(sevenDaysAgoX.getDate() - 7);
const sevenDaysAgoX = new Date();
sevenDaysAgoX.setDate(sevenDaysAgoX.getDate() - 7);

const sevenDaysAgo = (new Date(sevenDaysAgoX.getTime() + Math.abs(sevenDaysAgoX.getTimezoneOffset() * 60000))).getTime();
const sevenDaysAgo = (new Date(sevenDaysAgoX.getTime() + Math.abs(sevenDaysAgoX.getTimezoneOffset() * 60000))).getTime();

await Promise.all(allLogs.map(async f => {
const fileDateFromName = getDateFromFilename(f);
if (!fileDateFromName || fileDateFromName < sevenDaysAgo){
await fs.unlink(f).catch(e => Log.error(`[CRON] Could not remove old log ${f}`, e));
Log.done(`[CRON] Removed old log ${f}.`);
++deletedLogs;
}
}));
await Promise.all(allLogs.map(async f => {
const fileDateFromName = this.#getDateFromFilename(f);
if (!fileDateFromName || fileDateFromName < sevenDaysAgo){
await fs.unlink(f).catch(e => Log.error(`[CRON] Could not remove old log ${f}`, e));
Log.done(`[CRON] Removed old log ${f}.`);
++deletedLogs;
}
}));

Log.done(`[CRON] Removed ${deletedLogs} old log${deletedLogs === 1 ? "" : "s"}.`);
};
Log.done(`[CRON] Removed ${deletedLogs} old log${deletedLogs === 1 ? "" : "s"}.`);
}
}

export default removeOldLogs;
export default LogHandler;
6 changes: 3 additions & 3 deletions src/service/cronScheduler.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import cron from "node-cron";
import Log from "../util/log.js";
import removeOldLogs from "../crons/removeOldLogs.js";
import LogHandler from "../crons/removeOldLogs.js";
import deleteRemovedGuilds from "../crons/deleteRemovedGuilds.js";

// ========================= //
Expand All @@ -20,14 +20,14 @@ const scheduleCrons = async function(client){

// daily cron
cron.schedule("0 0 * * *", () => {
removeOldLogs();
LogHandler.removeOldLogs();
});

const cronCount = cron.getTasks().size;
Log.done("Scheduled " + cronCount + " Crons.");

// start jobs on init
await removeOldLogs();
await LogHandler.removeOldLogs();
await deleteRemovedGuilds(client);
};

Expand Down

0 comments on commit b148d2d

Please sign in to comment.