Dimensione massima log
All checks were successful
Compila e pubblica sul registro integrato / Build-Docker-Image (push) Successful in 8m22s
All checks were successful
Compila e pubblica sul registro integrato / Build-Docker-Image (push) Successful in 8m22s
This commit is contained in:
21
README.md
21
README.md
@@ -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
|
||||
```
|
||||
|
||||
4
index.js
4
index.js
@@ -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
50
logs.js
@@ -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 };
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user