const fs = require("node:fs"); const path = require("node:path"); const shared = require("./shared.js"); let logFile; let dir = 'log/'; if (!fs.existsSync(dir)) { fs.mkdirSync(dir); } logFile = path.join(__dirname + '/' + dir, "NetBird-UptimeKuma.log"); console.log(`[${shared.now()}] File di log situato in ${logFile}`); if ("MAX_LOG_SIZE" in process.env) { shared.setMaxLogSize(process.env.MAX_LOG_SIZE); } console.log(`[${shared.now()}] Dimensione massima del file di log: ${shared.getMaxLogSize()} MB`); function writeToLog(message) { fs.appendFileSync(logFile, `${message}\n`); } function Log(message) { console.log(message); keepLogfileSmall(); writeToLog(message); } function keepLogfileSmall() { let stats = fs.statSync(logFile); let currentLogSize = stats.size / (1024 * 1024); if (currentLogSize >= shared.getMaxLogSize()) { try { const data = fs.readFileSync(logFile, 'utf8'); let lastWorkingTokenIndex = data.lastIndexOf("Nuovo token creato"); if (lastWorkingTokenIndex == -1) { try { fs.writeFileSync(logFile, ""); Log(`[${shared.now()}] Log precedente cancellato correttamente.`) } catch (err) { Log(`[${shared.now()}] Errore nella scrittura del file: ${err}`); } } else { let lastWorkingTokenLine = data.substring(lastWorkingTokenIndex - 22, lastWorkingTokenIndex + 60) + "\n"; try { fs.writeFileSync(logFile, lastWorkingTokenLine); Log(`[${shared.now()}] Log precedente cancellato correttamente.`) } catch (err) { Log(`[${shared.now()}] Errore nella scrittura del file: ${err}`); } } } catch (err) { Log(`[${shared.now()}] Errore nella lettura del file: ${err}`); } } } module.exports = { Log };