Jak pohodlně číst a prohledávat logy webového serveru Apache

Jestliže máte k dispozici virtuální server nebo alespoň kvalitní webhosting s přístupem k SSH a logům webového serveru, máte jedinečnou možnost sledovat chybová hlášení generovaná serverem a PHP. Při hledání problému vám napoví více, než případné chyby v prohlížeči, které se ani nemusejí zobrazit.

Reklama

Č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.

Tagy: 

Reklama

Přidat komentář