Wtyczka Analizator logów¶
Zamień edytor w pełnoprawny warsztat logów: parsuj ustrukturyzowane pliki logów przez edytowalne profile, nawiguj po sparsowanych polach i znacznikach czasu, scalaj wiele źródeł na jednej osi czasu, śledź pojedyncze żądanie między źródłami i analizuj częstości / percentyle / top-N wartości — wszystko bez ładowania surowego tekstu do zwykłej karty edytora.
Gdzie ją znaleźć¶
Wtyczka dodaje trzy pozycje w menu Plik:
- Plik ▸ Otwórz jako log… — otwiera pojedynczy plik logu w dedykowanym oknie Widoku logu.
- Plik ▸ Otwórz scalone logi… — wybierz dwa lub więcej plików, każdemu przypisz profil i zobacz je przeplecione na jednej osi czasu.
- Plik ▸ Otwórz log systemowy… (tylko Windows) — odpytuj Dziennik
zdarzeń Windows w tym samym widoku, z filtrami zepchniętymi do
PowerShellowego
Get-WinEvent.
Strona Preferencje ▸ Wtyczki ▸ Analizator logów pozwala ustawić domyślne chipy poziomów, profil zapasowy dla plików niepasujących do globów, próg „ostrzeż przed parsowaniem plików powyżej N MB", domyślny tryb filtra oraz interwał odpytywania follow-tail — jedno pokrętło dla timera ogona pliku i strumienia logu systemowego (każde odpytanie Dziennika zdarzeń Windows uruchamia proces PowerShell, więc ciężkie źródła mogą chcieć wolniej).
Duże pliki parsują się w wątku tła z żywym licznikiem rekordów, a kosztowne agregacje (szablony komunikatów, anomalie) też liczą się w tle — pasek stanu pokazuje „Analizowanie statystyk w tle…", a panele wypełniają się, gdy są gotowe, więc okno pozostaje responsywne. Przy bardzo dużych plikach statystyki agregują najnowsze 150 000 rekordów, a oś czasu próbkuje cały zakres.
Widok logu (jeden plik)¶
Otwarcie logu pokazuje dedykowane okno Widok logu. Odzwierciedla ergonomię tabelowych okien edytora (jak okno Porównania) i trzyma się z dala od paska kart edytora.
Układ¶
- Pasek narzędzi — chipy poziomów (TRACE…FATAL), tryb filtra + linia
filtra, Następny / Poprzedni błąd (
F8/Shift+F8), Idź do czasu (Ctrl+G). - Pasek osi czasu u góry — wolumen zdarzeń w kubełkach czasu, kolorowany poziomami. Przeciągnij zakres, aby filtrować po czasie; kliknij słupek, aby przeskoczyć tabelą do pierwszego rekordu w tym kubełku lub po nim.
- Tabela pośrodku — Czas / Poziom / Źródło / Komunikat, zwirtualizowana, więc przewija się płynnie nawet przy setkach tysięcy rekordów.
- Panel szczegółów pod tabelą — pełny, surowy wielolinijkowy wpis wybranego wiersza.
- Panel statystyk zadokowany po prawej — liczniki per poziom, częstość
zdarzeń, wybierak percentyli (p50/p95/p99 po dowolnym polu liczbowym,
domyślnie
bytes), rozkład klas statusów HTTP (1xx…5xx, ukryty bez polastatus) i tabela top-N po dowolnym polu (domyślnieurl, limit 25 wierszy).
Tryby filtra¶
Linia filtra na pasku narzędzi przyjmuje pięć rodzajów wyrażeń; tryb wybierasz z listy po jej lewej:
| Tryb | Co dopasowuje |
|---|---|
| Zwykły | Podłańcuch bez rozróżniania wielkości liter w surowej linii. |
| Słowa | Tokeny rozdzielone białymi znakami; każdy token musi wystąpić gdzieś w linii, w dowolnej kolejności. phpinfo GET dopasowuje linię zawierającą i phpinfo, i GET. |
| Wieloznaczniki | Glob * i ? na surowej linii, bez rozróżniania wielkości liter. |
| Regex | Zwykły wzorzec QRegularExpression, domyślnie bez rozróżniania wielkości liter. |
| Zapytanie | Ustrukturyzowana gramatyka z predykatami pól, poziomów i czasu plus AND/OR/NOT i nawiasy. |
Przykłady trybu Zapytanie:
level>=WARN
status:500 AND method:POST
message~/timeout|refused/ AND @time in [09:00..09:05]
NOT (source:nginx OR source:apache)
level>=ERROR OR (status:5\d\d AND method:POST)
Linia filtra tłumi pisanie przez 200 ms, żeby tabela nie filtrowała się przy każdym naciśnięciu klawisza; Enter albo utrata fokusu stosuje filtr od razu, wyczyszczenie linii też. Gdy wyrażenie Wieloznaczniki / Regex / Zapytanie się nie kompiluje, linia robi się czerwona, a podpowiedź pokazuje diagnostykę — proxy trzyma na ekranie poprzedni poprawny filtr, więc tabela nie pustoszeje podczas pisania.
Nawigacja¶
- F8 / Shift+F8 — następny / poprzedni rekord błędu lub krytyczny.
- Ctrl+G — idź do konkretnego czasu (UTC, popup z kalendarzem).
- Kliknięcie słupka osi czasu skacze do pierwszego rekordu w kubełku.
Te trzy skróty są remapowalne w Mapowaniu skrótów (kategoria Log Analyzer); otwarte Widoki logu stosują remap natychmiast, a podpowiedzi paska narzędzi pokazują bieżący skrót.
Żywe parsowanie + anulowanie¶
Duże pliki pokazują rekordy w dziesiątkach milisekund; parsowanie trwa w tle,
a tabela rośnie w miarę napływu rekordów. Filtrowanie, przewijanie i F8
działają, gdy parsowanie jeszcze trwa. Zamknięcie okna szybko zatrzymuje
workera.
Widok scalonych logów¶
Plik ▸ Otwórz scalone logi… pozwala badać problem rozciągnięty na wiele źródeł — log klienta plus log serwera, log aplikacji plus dziennik systemowy, web access plus error itd.
Wybór profilu per plik¶
Po wyborze dwóch lub więcej plików widzisz małe okno z wierszem na plik i
listą profili per wiersz. Lista jest wstępnie wybrana przez dopasowanie nazwy
pliku do globów nazw każdego profilu (bez rozróżniania wielkości liter). Dla
typowego wdrożenia nginx access.log sam wybiera
nginx — access log (default combined), a error.log —
nginx — error log. Przed OK możesz każdy wiersz nadpisać ręcznie.
Układ¶
- Pasek narzędzi — pola widoczności per źródło (każda etykieta w kolorze toru źródła), chipy poziomów, linia filtra z listą trybów, kontrolki śledzenia (lista + Śledź / Wyczyść), przełącznik Diagram sekwencji, przełącznik Obok siebie.
- Pasek osi czasu u góry — skumulowany histogram per źródło z jednym torem na źródło, więc skorelowane wybuchy widać gołym okiem.
- Baner śledzenia nad tabelą — bursztynowy pasek widoczny tylko przy
aktywnym filtrze śledzenia:
Following <pole> = <wartość> — N wierszy we wszystkich źródłach. - Główny obszar stosu — trzy strony przełączane z paska narzędzi:
- Tabela (domyślnie): jeden wiersz na scalony rekord z kolumnami
Czas / Źr / Poziom / Logger / Komunikat; kolor tekstu kolumny
Źrto kolor toru źródła, więc tożsamość źródła skanujesz wzrokiem. - Diagram sekwencji — zobacz Śledzenie.
- Panele obok siebie — zobacz Obok siebie.
- Tabela (domyślnie): jeden wiersz na scalony rekord z kolumnami
Czas / Źr / Poziom / Logger / Komunikat; kolor tekstu kolumny
- Panel szczegółów pod tabelą.
Filtry, które się składają¶
W widoku scalonym potok filtrów działa w tej kolejności, wszystkie nakładają się na siebie:
- Widoczność źródeł — pola per źródło na pasku narzędzi.
- Chipy poziomów — TRACE…FATAL.
- Śledzenie — niżej.
- Filtr tekstowy — Zwykły / Słowa / Wieloznaczniki / Regex / Zapytanie (te same tryby i zachowanie co w widoku jednego pliku, zastosowane do scalonego strumienia).
Możesz więc np. wykonać level>=ERROR AND status:500 naraz na logach access
i error nginxa jednym wyrażeniem i śledzić jednego klienta przez oba —
filtr śledzenia zawęża zbiór dalej, nie psując filtrów poziomu / źródła /
tekstu.
Śledzenie (Follow trace)¶
- Wybierz klucz korelacji w liście Trace: paska narzędzi. Jest
zasiana konwencjonalnym zestawem (
trace_id/request_id/session_id/correlation_id/span_id/xRequestId) i każdą odrębną nazwą pola faktycznie obecną w załadowanych rekordach. W razie potrzeby wpisz własną nazwę. - Wybierz wiersz w tabeli.
- Kliknij Follow trace — albo kliknij wiersz prawym przyciskiem i wybierz Follow trace: \<pole>=\<wartość> dla dowolnego konwencjonalnego klucza, jaki rekord niesie (droga jednym ruchem, bez kroku z listą).
Tabela natychmiast filtruje się do rekordów dzielących wartość tego klucza we wszystkich źródłach. Kliknij Clear trace, aby zdjąć filtr.
Diagram sekwencji¶
Gdy filtr śledzenia jest aktywny i widoczne są dokładnie 2–4 źródła, staje się dostępny przełącznik Diagram sekwencji. Przełącza główny obszar w diagram o stałych torach:
- Każde widoczne źródło to pionowy tor z kolorową próbką w etykiecie u góry.
- Jeden wiersz na rekord, czas płynie z góry na dół. Rzeczywisty znacznik czasu jest po lewej, więc nie tracisz precyzji; wiersze są rangowe (stała wysokość), a nie proporcjonalne do czasu, bo prawdziwe śledzenie ma wybuchy i długie pauzy — oś proporcjonalna zmarnowałaby większość ekranu na pauzy.
- Kolorowa kropka na torze właściciela plus subtelna szara strzałka między kolejnymi rekordami na różnych torach — dosłownie widać, jak żądanie odbija się między systemami.
- Chip poziomu i tekst komunikatu po prawej.
Klik w wiersz diagramu przewija tabelę pod spodem do tego rekordu. Wyłącz przełącznik, aby wrócić do tabeli.
Przy >4 źródłach diagram jest wyłączony i zostaje widok tabeli.
Panele obok siebie¶
Gdy widoczne są dokładnie dwa źródła, dostępny staje się przełącznik Obok siebie. Dzieli główny obszar na dwa panele tabel — po jednym źródle — z pozycjami przewijania sprzężonymi po znaczniku czasu: przewiń jeden panel, a drugi podąża do najbliższego rekordu w tym czasie lub po nim. Dryf zegarów serwerów widać naturalnie jako rozjeżdżanie się paneli.
Przełączniki Diagram sekwencji i Obok siebie wykluczają się wzajemnie (włączenie jednego wyłącza drugi); oba wracają do widoku tabeli, gdy liczba aktywnych źródeł wyjdzie poza obsługiwany zakres.
Natywne logi systemowe (Windows)¶
Plik ▸ Otwórz log systemowy… odpytuje Dziennik zdarzeń Windows bez
potrzeby pliku na dysku. Okno pyta o kanał (Application / System / Security /
nazwa własna), opcjonalny minimalny poziom i limit rekordów. Wtyczka
uruchamia PowerShellowe Get-WinEvent | ConvertTo-Json -Compress z filtrem
zepchniętym w dół, po czym parsuje wyjściowy NDJSON dołączonym profilem
windows-event-log.
Akcja jest rejestrowana tylko, gdy host naprawdę ma działające źródło Dziennika zdarzeń Windows — na Linuksie i macOS jest autentycznie nieobecna, a nie wyszarzona.
Źródła unified log macOS i journald Linuksa są planowane i wpasują się za ten sam wewnętrzny interfejs, bez zmian UI, gdy wylądują.
Profile¶
Silnik nie ma wbudowanych, specjalnie traktowanych parserów. Każdy
obsługiwany format — Apache, nginx, syslog, JSON Lines, logfmt, CSV, Dziennik
zdarzeń Windows — to plik JSON LogProfile dostarczany w katalogu
log-profiles/ aplikacji. Profile użytkownika leżą w folderze
log-profiles/ katalogu konfiguracji użytkownika i nadpisują dołączone po
id.
Każdy profil opisuje:
- model linii —
regex,json,logfmt,csvalbodelimited. - znacznik czasu — które pole, akceptowane formaty w stylu
strftime, strefa źródłowa, jednostki epoki. - poziom — które pole plus mapowanie surowych tokenów na kanoniczny enum
Trace / Debug / Info / Warn / Error / Fatal. - kontynuację — jak kolejne linie kleją się do bieżącego rekordu (stosy Javy stają się jednym wpisem, nie trzydziestoma).
- pola pochodne — dodatkowe pola liczone pod-wzorcem po istniejącym
polu. Dołączone profile apache + nginx używają tego, by wystawić jednolite
pole
client_ip, dzięki czemu Follow trace widoku scalonego koreluje zdarzenia access i error tego samego klienta w obu źródłach. - rotację — glob odkrywający zrotowane rodzeństwo źródła, regułę
porządkowania (
numeric-suffix,embedded-date,first-record-time,mtime) plus opcjonalną przezroczystą dekompresję segmentów.gzi.zip.
Edytor profili z chwytaczem pól, aliasami w stylu grok i żywym testerem znaczników czasu jest planowany w kontynuacji.
Motywy¶
Kolory per poziom pochodzą z motywu — wtyczka rejestruje kategorię palety na kanoniczny poziom, Edytor motywów je pokazuje, a każdy motyw może je nadpisać. Zmiana motywu aktualizuje kolumnę poziomu, pasek osi czasu, panel statystyk i diagram sekwencji równocześnie.
Zobacz też¶
- Porównanie / diff — okno Porównania, na którym wzorowane są okna Analizatora logów.
- Logowanie i diagnostyka — własny plik logu edytora (co innego niż widok Analizatora logów na dowolne formaty logów).