Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Analizator logów

Prosta aplikacja webowa do parsowania i analizy logów konsolowych Spring Boota (ArgoCD / GKE). Działa w całości lokalnie w przeglądarce — nie wymaga instalacji, serwera, runtime'u ani internetu. Żadne dane nie opuszczają komputera.

Uruchomienie

  1. Rozpakuj folder w dowolne miejsce (np. C:\Narzedzia\log-analyzer\).
  2. Kliknij dwukrotnie index.html.
  3. Kliknij Otwórz plik… i wskaż swój .log (albo przeciągnij plik na okno, albo wklej fragment przyciskiem Wklej).

Oba pliki muszą leżeć w tym samym folderze:

index.html    ← cała aplikacja (jQuery i Bootstrap wbudowane, działa offline)
patterns.js   ← konfiguracja: profile parsowania + biblioteka wzorców błędów

Jeśli patterns.js zniknie albo będzie miał błąd składni, aplikacja użyje wbudowanej kopii domyślnej — nic się nie zepsuje.

Zalecana przeglądarka: Chrome lub Edge (dowolna nowa wersja).

Co robi

Parsowanie z konfigurowalnym schematem. Domyślny profil to JSON-per-linia (timestampSeconds + timestampNanos, severity, thread, logger, message, context). Drugi profil obsługuje klasyczny tekstowy format Logbacka wraz ze sklejaniem wielolinijkowych stack trace'ów w jeden wpis. Przy otwieraniu pliku aplikacja sama wykrywa pasujący profil (próbuje sparsować próbkę linii); możesz go też wybrać ręcznie w pasku górnym — plik zostanie od razu przeparsowany na nowo.

Preambuła. Linie, które nie pasują do profilu (logi vault_init.sh, Supervisord, wewnętrzna inicjalizacja Logbacka, baner ASCII Spring Boota), trafiają do osobnego, zwijanego panelu nad listą i są tam kolorowane wg typu — zamiast zaśmiecać główną tabelę.

Rozpoznawanie znanych błędów. Każdy wpis jest sprawdzany względem biblioteki wzorców; dopasowanie widać jako plakietkę na liście, a w panelu szczegółów pojawia się opis przyczyny i podpowiedź, co sprawdzić.

Najgłębszy Caused by:. Dla wpisów ze stack trace aplikacja wyciąga ostatni element łańcucha Caused by: i pokazuje go osobno jako prawdopodobną prawdziwą przyczynę.

Filtry. Poziom logowania, wyszukiwanie tekstowe lub regex (z podświetlaniem trafień), logger, wątek, zakres czasowy, wzorzec błędu.

Reszta. Statystyki pliku (wg poziomu, top loggery/wątki/wzorce, rozkład godzinowy), eksport przefiltrowanego widoku do .log / .txt / .csv / .json, przełącznik czasu lokalnego i UTC, przeciąganie podziału lista/szczegóły, przyrostowe renderowanie tabeli (duże pliki nie zamrażają UI).

Skróty klawiszowe

Skrót Działanie
/ poprzedni / następny wpis
Ctrl+F kursor w polu wyszukiwania
Ctrl+O otwórz plik

Dodawanie własnych wzorców błędów

Otwórz patterns.js w Notatniku i dopisz kolejny obiekt do tablicy window.LOG_PATTERNS:

{
  id: 'moj-wzorzec',
  name: 'Krótka nazwa na liście',
  regex: 'tekst szukany|inny\\s+wariant',   // uwaga: podwójny backslash
  severity: 'critical',                      // critical | warning | benign
  desc: 'Co to znaczy, jednym zdaniem.',
  hint: 'Co sprawdzić / jak naprawić.'
}

Zapisz plik i odśwież stronę (F5). Wzorzec jest szukany w nazwie loggera, nazwie wątku i pełnej treści wpisu (także w wielolinijkowym stack trace).

Opcjonalne pola:

  • flags — flagi regexa, domyślnie "i" (bez rozróżniania wielkości liter),
  • field"message" albo "logger", jeśli chcesz zawęzić obszar szukania,
  • requiresAlso — drugi regex, który też musi pasować, żeby uznać dopasowanie (używane np. do rozróżnienia „Config Server nieosiągalny" od innych błędów tego samego loggera).

To samo można zrobić z poziomu aplikacji: Ustawienia → Wzorce błędów. Zmiany zapisane w tym oknie trafiają do pamięci przeglądarki i mają pierwszeństwo przed plikiem. Przycisk Eksportuj do pliku generuje gotowy patterns.js, którym możesz podmienić oryginał (np. żeby rozdać konfigurację zespołowi), a Przywróć domyślne kasuje zmiany i wraca do pliku.

Dodawanie własnego profilu parsowania

W patterns.js, tablica window.LOG_PROFILES.

Format JSON-per-linia:

{
  id: 'moj-json', name: 'Mój format JSON', type: 'json',
  timestampMode: 'secondsNanos',   // secondsNanos | epochMillis | iso
  map: { timestampSeconds:'ts_sec', timestampNanos:'ts_nano', timestamp:'',
         level:'level', thread:'thread', logger:'logger',
         message:'msg', context:'ctx', pid:'', app:'' },
  required: ['level','msg'],       // pola konieczne do uznania linii za wpis
  levelAliases: { WARNING:'WARN' } // normalizacja nazw poziomów
}

Format tekstowy — regex z nazwanymi grupami (?<timestamp>…), (?<level>…), (?<pid>…), (?<app>…), (?<thread>…), (?<logger>…), (?<message>…):

{
  id: 'moj-tekst', name: 'Mój format tekstowy', type: 'regex',
  pattern: '^(?<timestamp>\\d{4}-…)\\s+(?<level>[A-Z]+)\\s+…(?<message>.*)$',
  continuation: '^(?:\\s+at\\s|Caused by:|\\.{3}\\s+\\d+\\s+more)'
}

Linie niepasujące do pattern są doklejane do poprzedniego wpisu jako kontynuacja (stack trace, treść wielolinijkowa); continuation służy do oznaczenia, że wpis zawiera stack trace.

Uwagi

  • Czasy są pokazywane w strefie czasowej systemu; przycisk UTC w pasku filtrów przełącza na czas uniwersalny (przydatne przy porównywaniu z GKE).
  • Pola message z zescapowanym XML-em (mapowania Hibernate Envers, kilka KB na wpis) są odescapowywane przez parser JSON i traktowane jako jedna wartość. Lista pokazuje pierwsze 150 znaków, panel szczegółów całość.
  • Aplikacja nie wykonuje żadnych żądań sieciowych.

About

Log parser application

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages