Log auslesen und bearbeiten in JavaScript?
Hallo ich bitte um Hilfe. Ich habe die Aufgabe bekommen eine riesige sich updatende .log Datei bekommen und diese soll ich in mit JavaScript auslesen und bearbeiten können so das zum Beispiel alle Erros im Log rot sind oder ähnliches. Habt ihr ein paar Tipps und Lösungsansetze wie man sowas macht gerne auch Links oder ähnliches bin gerade bisschen am verzweifeln?
3 Antworten
Es kommt ein bisschen auf das Format der Logdatei an und wo du das Log formatiert anzeigen möchtest und es kommt darauf an, wie Fehler gekennzeichnet sind.
Zum Beispiel könntest du mit einem Filereader im Idealfall .readAll() sagen und dann mit einem Regular Expression Objekt in allen Zeilen mit ERROR ein span color="red" Tag oder ähnliches setzen.
Ist das nicht möglich oder zu kompliziert, musst du die Datei Zeile für Zeile durcharbeiten.
Es wäre gut, wenn entweder bereits ein XML-Format vorläge oder ein CSV-Log, d. h. pro Logmeldung eine Zeile.
Ich empfehle JScript. Ist sehr, sehr ähnlich zu JavaScript und arbeitet in einer Containeranwendung, die auf dem Dateisystem operieren kann.
Das Log-Beispiel kann problemlos zeilenweise nach FEHLER abgesucht werden. Es ist nur die Frage, wie man es formatieren soll und wo die Fehler formatiert dargestetllt werden sollen.
Als Oberfläche empfehle ich eine HTA-Anwendung. Das sollte sowohl HTML-Darstellungen als auch den Zugriff auf das Dateisystem per JScript ermöglichen.
Vielleicht reicht es aber auch, die Daten in eine Exceltabelle zu konvertieren und dort Formatierungen durchzuführen.
es ist eine .log datei die ungefähr so aussieht
++++++++++++++++++++++++++++++++++++++++++++++++++++
####################################################
09.12.2022 06:58 - 12335-TEST-SYSTEM -
Outlook Addin 32_64Bit v5.4.1 - 0 = ##### --- Paket Start --- ##############
09.12.2022 06:58 - 34234234-TEST-SYSTEM - Gingco.Net-
Outlook Addin 32_64Bit v5.4.1 - 0 = Office 64 Bit Version install.
09.12.2022 06:58 - 45645646-TEST-SYSTEM -Outlook Addin 32_64Bit v5.4.1 - 0 +++++ --- Installation Ende --- +++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++
####################################################
09.12.2022 07:02 - 346346-TEST- SYSTEM - Adobe-Reader DC 32 Bit v2022 - 0 = ##### --- Paket Start --- ##############
09.12.2022 07:02 - 346343-TEST- SYSTEM - Adobe-Reader DC 32 Bit v2022 - 0 = ##### --- Installation Start --- ########
FEHLER - 11.05.2022 14:59 - FEHLER - 1603 = Waehrend der Installation ist ein schwerwiegender Fehler aufgetreten. = Nach dem Installationsversuch! Errorlevel: 1603!
09.12.2022 07:02 - 346346346-LUUUUB - SYSTEM - Adobe-Reader DC 32 Bit v2022 - 0 = ist bereits installiert, InstallationsVerzeichnis erkannt!
Bloß das die aktuell 152155 Zeilen hat!
kannst du die log datei überhaupt über den webserver erreichen ?
oder sollst du das über eine locale webseite machen ?
das problem ist, das du nicht einfach so auf locale dateien zugreifen kannst , das verhindert die sicherheits einrichtung des browsers . aus gutem grund , den eine webseite soll ja nicht einfach von irgendeinem user dateien local lesen können . das wäre ja ein sicherheitsloch .
Ja die Log datei habe ich hier lokal rumliegen.
Beides erst lokal und wenn das klappt dann über Server
dann kannst du nur über ein <input type="file"> arbeiten und sie quasi selber in den browser uploaden .
function openFile() {
document.getElementById('inp').click();
}
function readFile(e) {
var file = e.target.files[0];
if (!file) return;
var reader = new FileReader();
reader.onload = function(e) {
document.getElementById('contents').innerHTML = e.target.result;
}
reader.readAsText(file)
}
und das html dazu
Click the button then choose a file to see its contents displayed below.
<button onclick="openFile()">Open a file</button>
<input id="inp" type='file' style="visibility:hidden;" onchange="readFile(event)" />
<pre id="contents"></pre>
dann könntest du die analyse mit dem
document.getElementById('contents').innerHTML
weiter betreiben
nochmal laden etc muss du dann immer manuel .
regex lernen
https://www.webmasterpro.de/coding/einfuehrung-in-regular-expressions/
damit kannst du zeilen extrahieren die bestimmte zeichen regeln enthalten . z.b. alle zeilen die einen FEHLER haben .
oder wenns nur zum testen ist , gleich als javascript datei und als variable zur verfügung stellen . dann kannst du es einfach als javascript datei einladen und auf deine variable deine regex etc anwenden .
ok danke gibt es denn irgendwie eine Möglichkeit das ich nicht immer selbstständig neu laden muss. Noch eine frage wäre wie schaffe ich es das immer nur die letzten 200 Zeilen vom Log in file gespeichert werden?
Google doch, wie man Dateien auslesen kann und wie man sie bearbeiten kann.
Dann kannst du den gesamten Log als String speichern. Wenn du jetzt nach Fehlern suchst, möglicherweise mit string.find() hast du das auch und dann musst du nur noch googlen, wie man Text rot macht in js.
das ist wenn es eine locale datei ist , nicht so einfach möglich, da stehen die sicherheitsregeln gegen , sonst könnte ja jde webseite einfach dateien von deinem computer lesen . und das input type=file muss immer vom user intitialisiert werden .
Funktioniert das denn aber so leicht das sich der log immer Updaten soll?
naja der log aktualisiert sich alle 2-3 minuten wie mache ich das denn wenn ich das nur zu nen string mach klappt das einfach so oder muss ich da noch was spezielles machen?
Du musst den String ja wieder im Log speichern. Dann kannst du das immer wieder wiederholen
Du kannst JavaScript verwenden, um die Datei einzulesen und sie dann zu analysieren und darzustellen. Hier ist ein grundlegender Ansatz, den du verwenden könntest:
Verwende die JavaScript-Funktion fs.readFile(), um die Datei einzulesen und als String zu speichern.
Verwende Regular Expressions, um nach bestimmten Mustern in der Log-Datei zu suchen, z.B. nach "Error" oder "Warning".
Verwende JavaScript-Funktionen wie map() und forEach(), um die gefundenen Einträge in der Log-Datei zu verarbeiten und sie dann auf der Seite darzustellen.
Für jeden gefundenen Eintrag kannst du beispielsweise die Hintergrundfarbe ändern, um ihn hervorzuheben, oder ein Symbol oder einen Text hinzufügen, um den Typ des Eintrags zu kennzeichnen.
Es ist wichtig zu beachten, dass dies nur ein grundlegender Ansatz ist und dass du die Log-Datei möglicherweise auf vielfältigere Weise analysieren und darstellen kannst. Wenn du weitere Fragen zu diesem Thema hast, kannst du gerne nochmal fragen.
naja , mit javascript wirst du gar nicht auf locale dateien zugreifen wenn es über den browser geht ohne server . den der browser verhindert das aus gutem grund. ein browser hat faktisch kein zugriff auf das locale dateisystem , wenn über das input type=file objekt und das nur wenn der user aktiv eingreift .