Dimensione massima log
All checks were successful
Compila e pubblica sul registro integrato / Build-Docker-Image (push) Successful in 8m22s

This commit is contained in:
La Programmatrice Verde
2026-01-04 15:35:25 +01:00
parent a9b21b948a
commit 69f90e7a34
4 changed files with 72 additions and 12 deletions

View File

@@ -7,7 +7,7 @@ Le due variabili **non** possono essere usate nello stesso momento.
Per inserire più di un peer nelle variabili d'ambiente, separarli con un `;`. Non inserire spazi o altri caratteri, solo i nomi/ID dei peer e `;` sono accettati.
Se vengono specificati degli hostname o degli ID non validi insieme a degli hostname o degli ID validi, quelli non validi saranno ignorati.
Se nessuna delle due variabili vengono specificate, il programma monitorerà tutti i peer registrati.
Il file di log è disponibile nella cartella di esecuzione in `./log/NetBird-UptimeKuma.log`
Il file di log è disponibile nella cartella di esecuzione in `./log/NetBird-UptimeKuma.log`. La sua dimensione massima di default è 10MB, ma può essere modificata da un numero nella variabile d'ambiente `MAX_LOG_SIZE`.
Il programma restituisce come codice di errore:
@@ -33,6 +33,21 @@ Attualmente sono fornite immagini precompilate per le architettura arm64 e amd64
## Docker
Docker run:
`docker run -p 3000:3000 -e BASE_TOKEN=<token> -e HOSTNAMES="<hostname1>;<hostname2>" -v /var/log/NetBird-UptimeKuma:/app/log gitea.laprogrammatriceverde.crabdance.com/verde/netbird-uptimekuma:latest`
```console
docker run -p 3000:3000 -e BASE_TOKEN=<token> -e HOSTNAMES="<hostname1>;<hostname2>" -v /var/log/NetBird-UptimeKuma:/app/log gitea.laprogrammatriceverde.crabdance.com/verde/netbird-uptimekuma:latest
```
Per il Docker Compose, vedere il file relativo.
<a href=docker-compose.yml>Docker Compose</a> di esempio:
```yaml
---
services:
netbird-uptimekuma:
image: gitea.laprogrammatriceverde.crabdance.com/verde/netbird-uptimekuma:latest
ports:
- 3000:3000
environment:
BASE_TOKEN: "<token>"
HOSTNAMES: "<hostname1>;<hostname2>"
volumes:
- /var/log/NetBird-UptimeKuma:/app/log
```

View File

@@ -40,10 +40,8 @@ app.get("/", (_, res) => {
/*
TODO:
- Fare in modo che la durata del timer di rinnovo sia dinamica e dipenda dalla durata rimasta del token inserito
- Fare in modo che con CTRL+C il programma effettivamente esca
- Fare in modo che con CTRL+C il programma effettivamente esca (in docker)
- Aggiungere un timer modificato dall'esterno (opzionale, default 1 giorno) che decida per quanto tenere un log prima di cancellarlo
- Quando un log viene cancellato copiare il token corrente nel log
- All'uscita del programma far stampare l'ultimo token in uso
- Usare i log con docker logs
- Aggiornare Node e il metodo di build
*/

50
logs.js
View File

@@ -5,19 +5,59 @@ let logFile;
let dir = 'log/';
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
logFile = path.join(__dirname + '/' + dir, "NetBird-UptimeKuma.log");
console.log(`[${shared.now()}] File di log situato in ${__dirname}/${dir}NetBird-UptimeKuma.log`);
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 };

View File

@@ -23,6 +23,13 @@ module.exports = {
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.tz.setDefault(dayjs.tz.guess());
return dayjs().format("DD/MM/YYYY HH:mm:ss.sss");
return dayjs().format("DD/MM/YYYY HH:mm:ss");
},
maxLogSize: 10,
setMaxLogSize(maxLogSize) {
this.maxLogSize = maxLogSize;
},
getMaxLogSize() {
return this.maxLogSize;
},
};