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 Analizator logów:
- Analizator logów ▸ Otwórz jako log… — otwiera pojedynczy plik logu w dedykowanym oknie Widoku logu.
- Analizator logów ▸ Otwórz scalone logi… — wybierz dwa lub więcej plików, każdemu przypisz profil i zobacz je przeplecione na jednej osi czasu.
- Analizator logów ▸ 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).
Tabela rekordów i panel szczegółów używają czcionki edytora z Preferencje ▸ Ogólne — tego samego kroju i rozmiaru co zwykła karta edytora, dzięki czemu znaczniki czasu i poziomy układają się kolumna w kolumnę. Zmiana tego ustawienia działa też na już otwarte widoki dziennika, bez potrzeby ich ponownego otwierania. Tak samo jest z widokiem scalonym, jego panelami obok siebie i diagramem sekwencji. Pasek narzędzi, wiersz filtra i panel statystyk zachowują czcionkę interfejsu: to obudowa, a nie treść dziennika.
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 Analizator logów); 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¶
Analizator logów ▸ 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 — 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:
Śledzenie <field> = <value> — 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ł — pole wyboru w lewym marginesie osi czasu, po jednym na pas, obok nazwy i koloru źródła. Odznaczony pas zostaje w widoku, przygaszony: musi zostać, bo to pole jest jedyną drogą powrotu. Prawy przycisk na marginesie daje Pokaż tylko to źródło / Pokaż wszystkie źródła.
- 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 Ślad: 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 Śledź — albo kliknij wiersz prawym przyciskiem i wybierz Śledź: \<field>=\<value> 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 Wyczyść ślad, 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.
Zestawy rotacji to jeden pas¶
Wybranie trzech plików z jednego zestawu rotacji to wybranie jednego logu,
więc wczytują się jako jeden pas. Okno wyboru pokazuje wiersz na pas, z
segmentami wypisanymi pod spodem od najstarszego, a pas jest podpisany
nazwą swojego najnowszego pliku z liczbą starszych — MxAPILog.txt (+2).
Prawy przycisk na pasie w timeline daje Pokaż każdy zrotowany plik osobno, a po rozdzieleniu Scal zrotowane pliki w jeden pas. Rozdzielenie to przegrupowanie tego, co jest już w pamięci — nic nie jest czytane ponownie — ale zmienia znaczenie wiersza, więc tabela traci zaznaczenie.
Źródła muszą podawać porównywalny czas¶
Scalenie umieszcza rekordy z kilku źródeł na jednej osi, co ma sens tylko wtedy, gdy wszystkie potrafią podać tyle samo daty. Sysloga bez roku nie da się umieścić względem logu datowanego bez wymyślenia roku, a logu budowania bez znaczników czasu nie da się umieścić w ogóle. Mieszanie jest odrzucane z góry, z komunikatem wymieniającym, które źródła należą do której grupy. Scalaj źródła tego samego rodzaju albo otwórz je osobno.
Przywracanie¶
Widok scalony wraca razem z sesją. Zapisywany jest profil wybrany dla każdego pasa i pliki, do których ten pas się rozwinął; rekordy są czytane ponownie w tle, więc zakładka pojawia się od razu i zapełnia w locie. Pliki, które zniknęły, i profile, które skasowano, są pomijane i odnotowywane w logu, zamiast zamieniać się w pytanie przy uruchomieniu.
Natywne logi systemowe (Windows)¶
Analizator logów ▸ 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 Śledź widoku scalonego koreluje zdarzenia access i error tego samego klienta w obu źródłach. - rotację — które pliki tworzą jeden logiczny log i w jakiej kolejności. Zobacz Rotacja: opisanie zestawu plików.
Nie trzeba pisać tych plików ręcznie: edytor do nich — z chwytaczem pól, aliasami w stylu grok i żywym testerem znaczników czasu — jest opisany w sekcji Edycja profili.
Czas pokazywany z dokładnością, jaką podaje log¶
Nie każdy log podaje pełną datę. Syslog RFC 3164 podaje miesiąc, dzień i godzinę, ale nie rok; niektóre logi wbudowane i firmowe podają samą godzinę; wyjście z budowania nie podaje nic.
Kolumna Czas pokazuje dokładnie to, co było w linii — 13:36:55,
Oct 10 14:32:52 albo pełny znacznik z UTC — i nigdy nie wypełnia luki
zgadywaniem. Tak samo działa eksport TSV i podgląd w edytorze profili, więc
wymyślony rok nie może opuścić aplikacji i zostać wzięty dalej za
prawdziwy.
Sortowanie, oś czasu i statystyki działają wewnątrz takiego pliku normalnie: brakujące części są kotwiczone wewnętrznie, żeby rekordy pozostały porównywalne między sobą. Po prostu nigdy nie są pokazywane.
Edycja profili¶
Analizator logów ▸ Edytuj profil… wypisuje każdy profil z plakietką Wbudowany albo Własny. Wybranie profilu go wczytuje.
Profile wbudowane są tylko do odczytu, tak samo jak wbudowane motywy: formularz jest widoczny, ale nieaktywny, a Klonuj to droga do ich zmiany. Klon dostaje wolny identyfikator, więc kopia nigdy nie przesłoni po cichu profilu, z którego powstała. Nowy zaczyna od zera, Usuń kasuje profil własny, a przełączenie się z niezapisanej pracy najpierw pyta.
Gdy importowany profil ma identyfikator taki jak wbudowany, zostaje zapisany pod wolnym identyfikatorem zamiast go zastąpić — a edytor mówi, pod jakim.
Rotacja: opisanie zestawu plików¶
Log zrotowany to jeden strumień pocięty na kilka plików. Profil mówi, które pliki należą do siebie, za pomocą dwóch nazw — nic więcej nie jest potrzebne, a skoro opis jest jeden, nie ma czemu przeczyć.
| Pole | Znaczenie |
|---|---|
liveName |
Plik, do którego trwa zapis. |
rotatedName |
Kształt, jaki przyjmują starsze pliki. |
indexOrder |
Który koniec numeracji jest najnowszy. |
orderBy |
Skąd bierze się kolejność. Niemal zawsze name. |
Placeholdery¶
Obie nazwy je przyjmują. Poza nimi każdy znak jest dosłowny — . to kropka,
a nie „dowolny znak", a * to gwiazdka, a nie wieloznacznik.
| Placeholder | Znaczy |
|---|---|
%LIVE% |
Plik otwarty przez użytkownika. Użyj, gdy profil nie może znać nazwy z góry. |
%N |
Numer rotacji. Odczytywany jako liczba, więc _10 trafia za _9, a nie między _1 i _2. |
%Y %y |
Rok, cztero- lub dwucyfrowy. Dwucyfrowe używają zwykłego progu: 69–99 to 19xx, 00–68 to 20xx. |
%m %b %B |
Miesiąc jako liczba, skrót (Jul) albo pełna nazwa (July). |
%d %j |
Dzień miesiąca albo dzień roku. |
%H %M %S |
Godzina, minuta, sekunda — dla schematów rotujących częściej niż raz dziennie. |
%% |
Dosłowny znak procenta. |
To te same pola strftime, których profil używa w formatach znacznika
czasu, więc nie ma drugiego zestawu do nauczenia.
Rozszerzenie kompresji (.gz, .zip, .bz2, .xz) jest obsługiwane
automatycznie i nie może pojawić się w żadnej z nazw: każdy schemat
dokleja je na końcu, po tym, co opisuje wzorzec.
Trzy stany liveName¶
| Wartość | Kiedy |
|---|---|
%LIVE% |
Profil ogólnego przeznaczenia, który nie może znać nazwy — zestaw jest zakotwiczony w pliku, który otwarto. |
Dosłowna nazwa, np. access.log |
Profil napisany dla jednej aplikacji, której plik bieżący zawsze tak się nazywa. |
| Pusta | Nie ma pliku bieżącego bez numeru: każdy plik jest numerowany albo datowany. Tak działa IIS i java.util.logging. |
Przykłady¶
| Schemat | liveName |
rotatedName |
|---|---|---|
| logrotate | %LIVE% |
%LIVE%.%N |
logrotate z dateext |
%LIVE% |
%LIVE%-%Y%m%d |
| Apache / nginx | access.log |
access.log.%N |
| IIS | (pusta) | u_ex%y%m%d.log |
| log4j2 / logback, domyślne rolowanie | %LIVE% |
app-%Y-%m-%d-%N.log |
| Rotacja godzinowa | %LIVE% |
app-%Y-%m-%d-%H.log |
java.util.logging |
(pusta) | java%N.log |
Jak ustalana jest kolejność¶
Przy orderBy: name — czyli domyślnie — najpierw decyduje data z nazwy,
numer rozstrzyga remisy w obrębie daty, a plik bez numeru jest plikiem
bieżącym, czyli najnowszym. indexOrder mówi, w którą stronę biegną
numery: higher-is-older dla logrotate i spdlog, higher-is-newer dla
Seriloga, Boost.Log i wszystkiego, co liczy w górę wraz z upływem czasu. Z
samej nazwy nie da się tego rozróżnić — dlatego musi to powiedzieć profil.
Pozostałe wartości orderBy są dla zestawów, których numerom nie można
ufać. Rotacja cykliczna używa w kółko tych samych kilku numerów, więc
numer oznacza slot, a nie wiek; first-record-time czyta wtedy pierwszy
znacznik czasu z każdego pliku, a mtime schodzi do systemu plików.
Jeśli wybrano name, a nazwy okażą się nie nieść ani daty, ani numeru,
kolejność spada na pierwszy rekord, potem na mtime, potem na samą nazwę —
i pasek stanu mówi, na którą, bo mtime jest nadpisywany przez
kopiowanie, rozpakowanie, przywrócenie z backupu albo przełączenie gałęzi.
Data w nazwie pliku nigdy nie staje się znacznikiem czasu rekordu
Daty odczytane z nazw plików służą wyłącznie do ustawienia segmentów w
kolejności. Rekordy zawsze biorą czas z linii, z której zostały
sparsowane. Plik o nazwie access.log-20260730 nadal zawiera rekordy z
takich godzin, jakie podają jego własne linie.
Wzorce odrzucane¶
Wzorzec z dwoma %N albo z %N przylegającym do pola daty jest odrzucany
przy wczytywaniu profilu, a rotacja zostaje dla niego wyłączona, z powodem
w diagnostyce. app_%N%Y%m%d.log przy nazwie app_1220260730.log daje się
odczytać na kilka sposobów, a ciche wybranie jednego z nich pomyliłoby
kolejność bez niczego na ekranie, co by to wyjaśniało. Wstaw między nie
dowolny znak literalny — każdy realny schemat i tak to robi.
Edytor profili sprawdza obie nazwy w trakcie pisania, więc odrzucony wzorzec widać już tam, a nie dopiero przy otwieraniu.
Podział po uruchomieniach aplikacji¶
Uruchomienie to jedno życie aplikacji od startu do zatrzymania i nie jest tym samym co plik: rotacja po rozmiarze tnie uruchomienie na kilka plików, a log rotowany wyłącznie po rozmiarze może pomieścić kilka uruchomień w jednym pliku.
Jeśli log wypisuje linię przy starcie — Volluto logging system started…,
Begin file log, baner frameworka — wpisz pasujący do niej regex w pole
runStartMarker profilu. Prawy przycisk na pasie w osi czasu daje wtedy
Podziel po uruchomieniach aplikacji, a każde uruchomienie staje się
osobnym pasem. Pozycja pojawia się tylko wtedy, gdy rekordy faktycznie
zawierają więcej niż jedno uruchomienie.
Bez markera granice da się jedynie zgadywać z przerw w czasie, a to zgadywanie jest domyślnie wyłączone i to celowo. Uruchomienie to pojęcie logów aplikacyjnych; nginx, apache, syslog i logi kontenerów to ciągłe usługi, które nie mają uruchomień w ogóle, a spokojna noc zostałaby inaczej odczytana jako setki restartów. Tam, gdzie zgadywanie jest używane, dostosowuje się do rytmu samego logu i jest odrzucane w całości, gdy daje uruchomienia zbyt krótkie, by były prawdziwe.
Czas cofający się wewnątrz źródła jest zawsze traktowany jako granica i zawsze zgłaszany — oznacza albo restart, albo segmenty ustawione w złej kolejności, a o obu warto wiedzieć.
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).