Hallo zusammen,
ich versuche grad ein Log-File als Website darzustellen. Das klappt soweit bisher auch. Inklusive Bereinigung des Logs um die Übersichtlichkeit zu erhöhen.
Nun müsste ich aber jedes Mal wenn sich im Log was ändert quasi den Webserver neustarten. Das ist natürlich keine wirkliche Lösung. Sonderlich viel Ahnung von Javascript und Node.js habe ich (noch) nicht und vermute es geht verhältnismäßig einfach.
Aber hier erstmal mein Code:
Ich vermute mal, dass der Code selbst schon nicht sonderlich optimal ist. Wenn also dazu jemand noch Verbesserungsvorschläge hat, sind die gern gesehen. Priorität hätte für mich allerdings erstmal, dass aktualisieren des Inhalts der Website bei Änderung des Logs.
Gruß
kamanu
ich versuche grad ein Log-File als Website darzustellen. Das klappt soweit bisher auch. Inklusive Bereinigung des Logs um die Übersichtlichkeit zu erhöhen.
Nun müsste ich aber jedes Mal wenn sich im Log was ändert quasi den Webserver neustarten. Das ist natürlich keine wirkliche Lösung. Sonderlich viel Ahnung von Javascript und Node.js habe ich (noch) nicht und vermute es geht verhältnismäßig einfach.
Aber hier erstmal mein Code:
Javascript:
var http = require("http");
var lines = [];
var fs = require("fs");
var filePath = "debug.log";
//Reads file and splits into lines
var text = fs.readFileSync(filePath).toString("utf-8");
var lines = text.split("\n");
//Neues Array für die Zeilen, die nachher gesäubert werden
var filteredLines = [];
aufhuebschen();
startWebServerAndShowList();
//Startet den Webserver
function startWebServerAndShowList(){
http.createServer(function(req, res){
writeWebsite(req, res);
}).listen(8080);
}
//Schreibt den Inhalt der Website
function writeWebsite(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
filteredLines.forEach(function(entry){
res.write(entry + "<br>");
});
res.end();
}
//Überprüft wann das Log-File zuletzt geändert wurde. Wird allerdings noch nicht genutzt.
function checkLastModified(){
mtime = fs.statSync(filePath).mtime;
console.log(mtime);
}
//Entfernt nicht relevante Zeilen
function checkRelevance(line){
if(line.includes("IN:", 20) && (line.includes("2015") || line.includes("2017") || line.includes("2018") || line.includes("2019") || line.includes("2020")))
return true;
else if(line.includes("OUT:", 20) && (line.includes("2015") || line.includes("2017") || line.includes("2018") || line.includes("2019") || line.includes("2020")))
return true;
else if(line.includes("TIMESTAMP:", 20))
return true;
else
return false
}
//Entfernt Zeugs aus den übrigen Zeilen, dass nicht wirklich relevant ist.
function aufhuebschen(){
lines.reverse();
filteredLines = lines.filter(checkRelevance); //Nur noch IN & OUT
for(i = 0; i < filteredLines.length; i++){ //Generelles Säubern
filteredLines[i] = filteredLines[i].replace("(bliblablub)", "")
}
}
Ich vermute mal, dass der Code selbst schon nicht sonderlich optimal ist. Wenn also dazu jemand noch Verbesserungsvorschläge hat, sind die gern gesehen. Priorität hätte für mich allerdings erstmal, dass aktualisieren des Inhalts der Website bei Änderung des Logs.
Gruß
kamanu