Často se na mě obracejí čtenáři s tím, že jejich webová aplikace má nějaký problém s fungováním, ale nevidí žádné chybové hlášení a nemají se od čeho odpíchnout. Typicky třeba v Drupalu máte nastaven zápis chyb do jeho logu, ovšem jeho prohledávání nemusí být dvakrát přehledné. Navíc ne všechna hlášení webserveru se zde objeví.
Pokud máte přístup k příkazovému řádku na serveru a logům webového serveru (v článku počítám s Apache běžícím na Linuxu), můžete velice pohodlně sledovat výpisy chyb a také je podle potřeby filtrovat. Stejně tak můžete prohlížet aktuální data o návštěvnosti.
Apache totiž generuje tzv. access.log a error.log. Oba jsou textové soubory s informacemi o návštěvách, respektive chybách. Najdete zde IP adresu návštěvníka, kompletní chybové hlášení i čas, kdy se tak stalo. Soubory mohou být pojmenované mírně odlišně, typicky mohou v názvu zahrnovat i jméno domény. Najdete je nejčastěji někde ve složce /var/www nebo /var/log/apache, záleží na nastavení operačního systému, resp. konkrétní linuxové distribuci.
Jak prohlížet seznam chyb na serveru
K prohlížení logů můžete v prostředí příkazového řádku Linuxu nebo Macu využít několik příkazů. My si ukážeme cat a tail. První z nich zobrazí obsah textového souboru, který mu předáte jako argument. Druhý dělá víceméně totéž, vrací poslední část souboru. S přepínačem -f však může být upraven k tomu, aby se zacyklil, nevracel řízení zpět příkazovému řádku, ale neustále sledoval požadovaný soubor. Pokud do tohoto souboru třeba webový server zapíše nový řádek, ihned jej uvidíte na obrazovce.
Příklady použití tedy budou následující:
cat /var/www/domena/data/logs/domena.cz.error.log
tail -f /var/www/domena/data/logs/domena.cz.error.log
Zobrazení záznamů z logu pro určitou IP adresu
Pokud výše uvedené dva příkazy zkombinujete s příkazem grep, můžete na obrazovku rychle dostat výpis z logu, který obsahuje záznamy jen pro určitou IP adresu, ze které se na web přistupovalo:
cat /var/www/domena/data/logs/domena.cz.error.log | grep 192.168.1.1
tail -f /var/www/domena/data/logs/domena.cz.error.log | grep 192.168.1.1
Pokud k příkazu grep doplníte přepínač -v, pak se zobrazí naopak všechny řádky, které specifikovanou hodnotu nemají.
Zobrazení záznamů z logu pro určitý soubor
Filtrování pomocí příkazu grep lze použít i k tomu, abyste třeba z přístupového logu zobrazili jenom informace vztahující se k určitému souboru nebo adrese, na kterou návštěvníci webu koukají:
cat /var/www/domena/data/logs/domena.cz.access.log | grep fotka.jpg
tail -f /var/www/domena/data/logs/domena.cz.access.log | grep fotka.jpg
Tolik tedy na téma rychlé prohlížení a filtrování logu webového serveru Apache. Pro pořádek ještě doplňuji, že vyfiltrovaná data můžete jednoduše uložit do nového souboru, například následovně:
cat /var/www/domena/data/logs/domena.cz.error.log | grep 192.168.1.1 > mojechyby.txt
Pokud jste s ssh a připojením k příkazovému řádku serveru zatím nikdy nepracovali, přijdou vám vhod články Důležité linuxové příkazy pro webmastery a Připojení k linuxovému serveru z Windows bez hesla.
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.
Podobné články
Komentáře k článku
Jednak netuším, proč nyní reagujete na devět let starý článek, jednak ano. V tu dobu mi to přišlo pohodlné, bez potřeby nějakých sofistikovaných grafických řešení. A pořád to operativně používám. Někde si samozřejmě logy posílám do různých další nástrojů určených k jejich analýze. Přijde na to, co chcete z logu vysledovat. Například pro analýzu návštěvnosti je fajn GoAccess.
tomuhle rikate pohodlne ? to web ctete taky v html ?