Przejdź do treści

Jak czytać logi i raporty z crashy

Znajdź w logach serwera Minecraft pierwszą prawdziwą przyczynę błędu i odczytaj crash report bez zgadywania.

Logi serwera znajdziesz w zakładce Dzienniki oraz w pliku /logs/latest.log. Crash reporty trafiają do katalogu /crash-reports/. Zasada diagnozy jest jedna: szukasz pierwszego błędu w kolejności chronologicznej i linii Caused by: — to ona wskazuje prawdziwą przyczynę, a nie ostatni komunikat na ekranie.

#Czego potrzebujesz

  • Dostęp do panelu manage.mchost.gg.
  • Zakładka Dzienniki (podgląd i pobieranie) lub Pliki (katalogi logs i crash-reports).

#Gdzie leżą logi

Plik Zawartość
/logs/latest.log Log bieżącego lub ostatniego uruchomienia
/logs/YYYY-MM-DD-N.log.gz Archiwa poprzednich sesji, spakowane
/crash-reports/crash-*.txt Raport z twardego crasha JVM

W zakładce Dzienniki masz pole Filtruj logi…, przycisk Odśwież i Pobierz do zapisania pełnego pliku.

#Poziomy komunikatów

Poziom Znaczenie
INFO Normalna praca serwera
WARN Ostrzeżenie — serwer działa dalej, ale coś jest nie tak
ERROR Błąd — zwykle nie wczytał się dodatek albo operacja się nie powiodła
FATAL Błąd krytyczny, serwer się zatrzymuje

Nie zaczynaj czytania od końca pliku. Ostatnie linie to zwykle skutek, nie przyczyna — serwer wypisuje tam informację o zamknięciu. Szukaj pierwszego ERROR od góry.

#Jak czytać stack trace

[12:03:41] [Server thread/ERROR]: Could not load 'plugins/StaryPlugin.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError:
  pl/example/Main has been compiled by a more recent version of the Java Runtime
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:147)
    ...
Caused by: java.lang.UnsupportedClassVersionError: pl/example/Main

Czytaj w tej kolejności:

  1. Pierwsza linia z ERROR — mówi, co się nie udało (Could not load 'plugins/StaryPlugin.jar').
  2. Nazwa pliku w cudzysłowie lub nawiasie kwadratowym — winowajca.
  3. Caused by: — właściwa przyczyna. Jeśli jest kilka takich linii, liczy się ostatnia.
  4. Linie at ... to ścieżka wywołań — przydatne dla autora dodatku, nie dla Ciebie.

#Typowe komunikaty i co oznaczają

Komunikat Przyczyna
UnsupportedClassVersionError Dodatek wymaga nowszej wersji Javy
NoClassDefFoundError Brak zależności — plugin wymaga innego pluginu
Could not load 'plugins/X.jar' Plugin niezgodny z wersją lub silnikiem
Failed to bind to port Poprzedni proces serwera wciąż działa
java.lang.OutOfMemoryError Wyczerpana pamięć
Failed to load level.dat Uszkodzony lub niekompletny świat
Incompatible mod set Rozjazd modów między klientem a serwerem
Can't keep up! Is the server overloaded? Serwer nie nadąża z tickami — patrz Lagi i optymalizacja

#Crash reporty

Plik z katalogu /crash-reports/ zaczyna się od sekcji ---- Minecraft Crash Report ----. Interesują Cię trzy fragmenty:

  • Description: — jednozdaniowy opis, co zawiodło.
  • Caused by: — właściwy wyjątek.
  • -- Head -- / Stacktrace: — pierwsze linie wskazują pakiet moda, np. at com.example.mod.EntityHandler.

Nazwa pakietu w stack trace to najszybszy sposób namierzenia moda odpowiedzialnego za crash.

Crash report powstaje tylko przy twardym zatrzymaniu JVM. Serwer, który zamyka się „grzecznie" po błędzie, zostawia ślad wyłącznie w latest.log.

#Filtrowanie logu

Pole Filtruj logi… w zakładce Dzienniki zawęża widok do pasujących linii. Praktyczne frazy: ERROR, Caused by, WARN, nazwa pluginu.

Przy pobranym pliku w terminalu:

grep -n "ERROR" latest.log | head -20
grep -n -A5 "Caused by" latest.log | head -40

#Zgłaszanie problemu

Zgłaszając sprawę wsparciu, dołącz cały plik latest.log (przycisk Pobierz), a nie zrzut ekranu z fragmentem. Brakująca linia sprzed błędu potrafi być tą jedyną istotną.

#Najczęstsze problemy

#W logu jest mnóstwo błędów — od czego zacząć

Od pierwszego chronologicznie. Kolejne wynikają zwykle z tego, że pierwszy komponent się nie wczytał.

#Log kończy się w połowie zdania

Serwer został zabity twardo — sprawdź, czy nie użyto Wymuś zatrzymanie i czy nie wystąpił OutOfMemoryError.

#Nie ma katalogu crash-reports

Nie doszło do twardego crasha. Diagnozuj z latest.log.

#Plik latest.log jest ogromny

Log rośnie, gdy plugin spamuje ostrzeżeniami. Pobierz plik i przefiltruj po ERROR — samo WARN z pętli można na tym etapie zignorować.

#Znalazłem nazwę moda, ale nie wiem co dalej

Usuń jego plik .jar z /mods lub /plugins, uruchom serwer i sprawdź, czy błąd zniknął. To potwierdza diagnozę.

#Co dalej