Log auslesen und bearbeiten in JavaScript?

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.

Woher ich das weiß:Berufserfahrung – Programmierer
Lenzer66u 
Fragesteller
 09.12.2022, 08:32

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!

0
TechPech1984  09.12.2022, 09:07

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 .

1
Suboptimierer  09.12.2022, 09:11
@TechPech1984

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.

0

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 .

Lenzer66u 
Fragesteller
 09.12.2022, 09:10

Ja die Log datei habe ich hier lokal rumliegen.

Beides erst lokal und wenn das klappt dann über Server

0
TechPech1984  09.12.2022, 09:24
@Lenzer66u

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 .

0
TechPech1984  09.12.2022, 09:33
@TechPech1984

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 .

0
Lenzer66u 
Fragesteller
 09.12.2022, 09:46
@TechPech1984

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?

0

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.

Woher ich das weiß:Hobby – Hobbyprogrammierer
Lenzer66u 
Fragesteller
 09.12.2022, 07:33

Funktioniert das denn aber so leicht das sich der log immer Updaten soll?

0
Lenzer66u 
Fragesteller
 09.12.2022, 08:21
@EragonSaphira17

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?

0
EragonSaphira17  09.12.2022, 08:24
@Lenzer66u

Du musst den String ja wieder im Log speichern. Dann kannst du das immer wieder wiederholen

0
EragonSaphira17  09.12.2022, 14:47
@Lenzer66u

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.

0
TechPech1984  09.12.2022, 09:05

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 .

0