Log serveru Valheim je jediné místo, kde se server vysvětluje sám. Ve výchozím stavu jde na standardní výstup - do terminálu, konzole panelu, docker logs nebo žurnálu systemd - a -logFile /path/to/file.log ho místo toho pošle do souboru. Zdravý start se čte v pevném pořadí: inicializuje se Unity a Steam, načte se nebo vygeneruje svět, server se zaregistruje a na crossplay serveru se objeví řádek se šestimístným join kódem. Poté každý hráč, který se připojí, zanechá krátkou stopu řádků se svým ID, jménem postavy a nakonec zavřeným socketem. Většina zbytku je šum. Těch pár řádků, na kterých záleží - nesoulad verzí, špatná hesla, odmítnutá ID, selhání uložení, chybějící knihovny - je to, co tě tento článek naučí najít.
Přesné znění řádků logu se mezi verzemi hry mění. Příklady níže jsou typické pro současné buildy; hledej podle charakteristické části řádku, ne podle každého slova.
Kam log jde#
Valheim si vlastní soubor s logem nevede, dokud o něj nepožádáš. Bez -logFile jde výstup tam, odkud byl proces spuštěn:
| Jak server běží | Kde číst log |
|---|---|
Linux, ručně nebo v tmux / screen | V terminálové relaci |
| Linux, pod systemd | journalctl -u valheim (název tvé jednotky) |
| Docker | docker logs <container> nebo vlastní cesta logu v image |
| Okno konzole ve Windows | V samotném okně, které se zavře, když proces skončí |
| Hosting s panelem | Živá konzole |
Cokoli z toho s -logFile | V souboru, který jsi pojmenoval |
-logFile je argument přehrávače Unity, ne Valheimu, a píše se s velkým F:
$ ./valheim_server.x86_64 -nographics -batchmode \ -name "Ravenhold" -port 2456 -world "Midgard" \ -password 'herring-barrel-42' -logFile /home/valheim/logs/valheim.logPoužívej ho všude, kde by výstup jinak zmizel - především ve Windows, kde server, který umře při startu, vezme s sebou okno konzole i důvod. U systemd nebo Dockeru je obvykle lepší ho vynechat, protože žurnál a běhové prostředí kontejneru už výstup uchovávají, rotují a opatřují časovými značkami. Jeden háček: soubor zadaný v -logFile se obvykle při dalším startu přepíše. Pokud server spadl, zkopíruj soubor před restartem, jinak jediný důkaz zmizí s dalším spuštěním.
Klient má také svůj log. Ve Windows je to Player.log v %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\. Když hráč říká, že se nemůže připojit, jeho log a log serveru čtené vedle sebe to obvykle vyřeší za minutu.
Normální start, popořadě#
Start, který funguje, vyprodukuje dlouhou dávku výstupu. Nepotřebuješ každý řádek; potřebuješ znát orientační body, protože místo, kde se zastaví, je místo problému. Silně zkráceně, s vynechanými stovkami řádků mezi nimi, vypadá start nějak takto:
Fallback handler could not load library .../libdl.soLoad world: Midgard (Midgard)Zonesystem StartDungeonDB StartGame server connectedSession "Ravenhold" with join code 483920 and IP 203.0.113.10:2456 is active with 0 player(s)Čteno shora dolů to říká:
- Unity se inicializovalo. Nejdřív přijdou řádky o subsystémech a grafickém zařízení. Na serveru bez grafiky jsou zprávy o chybějícím grafickém zařízení očekávané.
- Načetlo se herní server API od Steamu. Bez něj server nemůže ověřovat hráče ani se nikde registrovat. V Linuxu je selhání v tomto místě téměř vždy
steamclient.so, který se nenašel. - Svět se načetl, nebo vytvořil. Řádek
Load world: Midgards názvem tvého světa je ten, který hledáš. Pokud log mluví o generování nového světa, když čekáš existující, název v-worldneodpovídá názvu souboru - včetně velkých písmen - a server vytvořil nový svět vedle starého. - Spustil se systém zón a databáze dungeonů. Ty přicházejí po načtení světa; zastavení mezi načtením světa a těmito řádky ukazuje na poškozený soubor světa.
- Server se připojil ke Steamu a zaregistroval. „Game server connected“ nebo něco podobného znamená, že ho backend přijal. Na crossplay serveru se kolem tohoto místa objevují také řádky PlayFab.
- Řádek relace. Na crossplay serveru obsahuje join kód; na jakémkoli serveru potvrzuje název, adresu a počet hráčů.
U zralého světa může být prodleva mezi „Load world“ a řádkem relace desítky vteřin. To se čte soubor světa z disku a staví se data zón a roste to s velikostí světa. Hráči, kteří se v té prodlevě pokusí připojit, dostanou „Failed to connect“, a proto server, který „běží“ podle seznamu procesů, ještě nemusí být připravený.
Join kód a řádek relace#
Na serveru spuštěném s -crossplay se join kód vypíše v řádku podobném tomuto:
Session "Ravenhold" with join code 483920 and IP 203.0.113.10:2456 is active with 0 player(s)Řádek se opakuje, dokud server běží, a počet hráčů v něm se mění, jak lidé přicházejí a odcházejí, což je levný způsob, jak jedním pohledem vidět obsazenost. Kód se generuje při startu a po každém restartu se změní. Pokud ho zveřejňuješ v kanálu na Discordu, aktualizuj ho po každém restartu, nebo zvol pevný čas restartu, aby parta věděla, kdy se podívat.
Pokud crossplay server join kód nikdy nevypíše, nezaregistroval se u PlayFab. Obvyklé příčiny jsou server, který se nemůže dostat ven na internet, výpadek PlayFab nebo dřívější selhání při startu, které bylo přehlédnuto. Hráči ze Steamu se mezitím mohou připojit adresou. Stranu relay popisuje článek crossplay a hráči na Xboxu.
Na serveru jen pro Steam bez -crossplay žádný join kód není a řádek relace může chybět nebo být kratší, podle verze. Hledej místo toho řádek o registraci u Steamu.
Řádky o připojení, vstupu a odpojení#
Každý hráč, který se připojí, zanechá rozpoznatelnou sekvenci. Na serveru jen pro Steam vypadá zhruba takto:
Got connection SteamID 76561198012345678Got handshake from client 76561198012345678Server: New peer connected,sending global keysGot character ZDOID from Sigrid : 1234567890:1A když odejde:
Closing socket 76561198012345678Co ti jednotlivé části říkají:
- `Got connection SteamID ...` - síťové spojení dorazilo. Je to nejstarší důkaz, že port je otevřený a hráč našel správný server. Pokud hráč říká „Failed to connect“ a tento řádek se pro něj nikdy neobjeví, problém je v adrese, portu nebo firewallu, ne v ničem uvnitř Valheimu.
- `Got handshake from client ...` - klient promluvil herním protokolem. Kolem tohoto místa proběhnou kontroly verze, hesla a seznamů.
- `Got character ZDOID from Name : ...` - hráč prošel všemi kontrolami a objevil se ve hře. Tento řádek ti říká, kdo skutečně vstoupil do světa, i se jménem postavy. Je to řádek, na který čekají skripty s oznámeními o připojení a boti pro Discord.
- `Closing socket ...` - spojení skončilo, z jakéhokoli důvodu: běžné odhlášení, pád, vyhození, vypršení časového limitu.
ZDOID 0:0 v řádku o postavě je dobře známý znak toho, že hráč zemřel, ne že se připojil; nástroje, které oznamují připojení na Discord, ho odfiltrují.
Na crossplay serveru nesou řádky o připojení ID s prefixem platformy - například Steam_76561198012345678 nebo Xbox_... - a řádky socketů PlayFab, a prosté SteamID se nemusí objevit. Ať log ukazuje jakoukoli podobu, přesně tu potřebují soubory se seznamy. Je to spolehlivý způsob, jak zjistit ID hráče pro adminlist.txt nebo permittedlist.txt: nech ho jednou se připojit a zkopíruj ID z logu. Formáty vysvětluje článek soubory se seznamy.
Takto vytáhneš všechna připojení z dlouhého logu v Linuxu:
$ grep "Got character ZDOID" valheim.log | grep -v ": 0:0"$ grep -E "Got connection|Closing socket" valheim.log | tail -n 40Řádky, které vysvětlí odmítnutého hráče#
Když je hráč odmítnut, server obvykle řekne proč v jediném řádku poblíž jeho připojení. Znění se liší; charakteristická fráze ne.
| Řádek obsahuje | Význam | Oprava |
|---|---|---|
has wrong password | Heslo nesouhlasí | Zjisti, co hráč napsal; viz pravidla hesla |
incompatible version | Build klienta a serveru se liší, vypsány jsou obě verze | Aktualizuj tu stranu, která zaostává |
is blacklisted or not in whitelist | Jeho ID je v bannedlist.txt, nebo existuje seznam povolených bez něj | Uprav soubor se seznamem |
Server is full nebo podobně | Už je připojeno deset hráčů | Počkej, nebo vyhoď někoho nečinného |
Řádek o verzi je z nich nejužitečnější, protože vypisuje obě čísla - serveru i klienta - takže víš, kterou stranu aktualizovat. Po záplatě Valheimu očekávej sérii takových řádků, dokud se server neaktualizuje, a modovaný server neaktualizuj dřív, než jsou aktualizované jeho mody. Načasování rozebírá článek aktualizace serveru a nesoulad verzí.
Hráč, který dojde k handshaku a pak je odmítnut, dokazuje, že síť je v pořádku. Hráč, který nikdy nevyvolá řádek Got connection, se k serveru vůbec nedostal. Toto jediné rozlišení vyřeší většinu vláken „nemůžu se připojit“; chyby failed to connect prochází každou zprávu na straně klienta.
Uložení a pravidelné stavové řádky#
Valheim drží svět v paměti a zapisuje ho každých -saveinterval vteřin, ve výchozím stavu 1 800. Každé uložení se zaloguje:
World saved ( 412.5ms )Číslo v závorce je doba, jak dlouho uložení trvalo, a stojí za to ho sledovat během života světa. Nový svět se uloží za desítky milisekund; hodně zastavěný a hodně terénně upravený může trvat vteřinu i víc a server během toho zamrzá. Pokud hráči hlásí záseky nebo odpojení každou půlhodinu, porovnej to s řádky o uložení. Řešením je obvykle kratší interval (menší, častější ukládání stojí méně každé), méně volně ležících předmětů a méně úprav terénu, ne větší plán. Delší seznam je v článku výkon a lagy serveru Valheim.
Řádek o uložení je důležitý i při vypínání. Čisté zastavení zapíše svět před ukončením procesu a posledním smysluplným řádkem v logu by mělo být uložení. Pokud log bez něj končí - useknutý uprostřed řádku nebo končící běžným hovorem - proces byl zabit, ne zastaven, a vše od předchozího uložení je pryč.
Server také pravidelně vypisuje stavový řádek podobný tomuto:
Connections 3 ZDOS:184211 sent:41 recv:122Connections je počet připojených peerů. ZDOS je počet objektů světa, které server sleduje - každý díl stavby, předmět, tvor a úprava terénu. Toto číslo jen roste, jak se svět prozkoumává a staví, a je dobrým ukazatelem toho, jak těžký svět je. Náhlý skok o desítky tisíc obvykle znamená, že někdo postavil obrovskou stavbu nebo odhodil horu předmětů.
Šum, který můžeš ignorovat#
Log Valheimu je většinou šum a něco z něj vypadá alarmující. Na fungujícím serveru je normální:
- `Fallback handler could not load library ...` - Mono zkouší knihovny v Linuxu. Neškodné a při startu se opakuje mnohokrát.
- Řádky `(Filename: ... Line: ...)` téměř po každé zprávě - odkazy na zdroj z debug buildu Unity. Ignoruj je; čti řádek nad nimi.
- Varování ke shaderům, grafickému zařízení a zvuku - dedikovaný server nemá grafiku ani zvuk a Unity to zmiňuje.
- `Destroying abandoned non persistent zdo ...` a podobný úklid ZDO - server uklízí objekty, které nikdo nevlastní.
- Varování Steam API, po kterých následuje úspěšný řádek „connected“ - první pokus selhal, druhý se povedl.
Image Dockeru od lloesche a několik panelových nastavení část tohoto výchozně filtruje. Log je pak snáze čitelný, ale může skrýt souvislosti, když se něco opravdu pokazí, takže pokud ti problém nedává smysl, podívej se na nefiltrovaný výstup. Obecné rady, jak číst hlučné logy a nepřehlédnout jediný důležitý řádek, najdeš v článku logy herních serverů vysvětleně.
Chybové řádky, na které stojí za to reagovat#
Tyto řádky znamenají, že je něco skutečně rozbité. Většina se objeví při startu.
| Řádek nebo vzor | Co to znamená | Co zkontrolovat nejdřív |
|---|---|---|
steamclient.so: cannot open shared object file | Linuxový server nemůže najít knihovnu Steamu | LD_LIBRARY_PATH, nebo knihovna chybí v instalaci |
| Stížnost na heslo, pak ukončení | Heslo kratší než 5 znaků nebo uvnitř názvu | Hodnota -password |
Log se zastaví po Load world | Soubor světa je poškozený nebo nečitelný | Obnov předchozí .db ze zálohy |
| Chyba socketu nebo bind s názvem portu | Jiný proces drží herní port | Druhý server nebo zbylý proces |
| Chyby BepInEx preloaderu | Zavaděč modů je rozbitý nebo nesedí | Složka BepInEx a startovací skript |
| Log useknutý uprostřed řádku, bez chyby | Proces byl zabit zvenčí | Limit paměti, nebo pád hostitele |
| Žádný join kód na crossplay serveru | Registrace u PlayFab selhala | Odchozí konektivita, stav PlayFab |
Předposlední řádek tabulky si zaslouží druhý pohled. Proces zabitý pro nedostatek paměti nestihne napsat rozloučení; log prostě skončí. Pokud log končí náhle a stroj nebo panel v tu dobu ukazuje paměť na limitu, máš odpověď. Na RE:NODE se server, který dosáhne limitu paměti, zastaví a čistě restartuje, místo aby se nechal swapovat, takže useknutý log vedle grafu paměti na stropu přesně říká, co se stalo. Úplný seznam příčin při startu je v článku server Valheim padá při startu.
Uchovávání a prohledávání logů#
Log, který za týden nedokážeš prohledat, moc nepomůže. Pár návyků:
- Pod systemd práci dělá žurnál:
journalctl -u valheim --since "2 hours ago"ajournalctl -u valheim -g "Got character"pokryjí většinu otázek. - S `-logFile` ho rotuj sám, jinak soubor poroste donekonečna. Pravidlo
logrotatescopytruncatefunguje s procesem, který drží soubor otevřený. - S Dockerem nastav na kontejneru limity velikosti logu, aby upovídaný server nezaplnil disk.
- Před aktualizací nebo změnou modů si poznamenej poslední řádek s verzí a ulož kopii logu z čistého startu. Když se něco rozbije, známý dobrý log k porovnání má větší cenu než jakýkoli návod.
Na RE:NODE ukazuje živá konzole nefiltrovaný výstup, s příkazovým řádkem pod ním pro admin příkazy, které vanilla Valheim povoluje, a join kód se tam objeví po každém startu. Správce souborů a SFTP dosáhnou na jakýkoli soubor logu, který zapíšeš přes -logFile. O tom, co a jak dlouho uchovávat, se víc dočteš v článku logy, které stojí za uchování.
FAQ#
Kde je soubor s logem dedikovaného serveru Valheim?
Ve výchozím stavu žádný soubor není: log jde na standardní výstup - do terminálu, okna konzole, konzole panelu, žurnálu nebo docker logs. Přidej -logFile s cestou, aby se zapisoval do souboru, což je jediný způsob, jak ho zachovat, když se okno konzole ve Windows zavře.
Jak v logu najdu ID hráče?
Nech ho jednou se připojit, i když bude odmítnut. Řádky o připojení nesou jeho ID v podobě, kterou server používá - SteamID64 na serveru jen pro Steam, ID s prefixem platformy na crossplay serveru. Zkopíruj ho přesně do souboru se seznamem.
Kde je v logu join kód?
V řádku relace vypsaném po startu na serveru běžícím s -crossplay, vedle názvu serveru a adresy. Při každém restartu se mění, takže si ho po každém přečti znovu.
Proč log pořád ukazuje stejný řádek relace?
Server pravidelně znovu vypisuje stav relace s aktuálním počtem hráčů. Není to chyba a je to rychlý způsob, jak zjistit, kolik lidí je online.
Můžu šum v logu Valheimu skrýt?
Některé image Dockeru a panely běžný šum filtrují výchozně a na vlastním stroji totéž udělá grep -v. Nech si nefiltrovanou kopii pro řešení problémů, protože filtrovaný výstup může skrýt řádek těsně před chybou.
Co znamená ZDOID 0:0 v logu?
Zaloguje se, když postava hráče zemře, ne když se připojí. Skripty oznamující připojení proto ignorují řádky končící 0:0.


