Porozumění souborům protokolu Laravel: Umístění, běžné problémy a osvědčené postupy.
Protokolování je jednou z nejdůležitějších součástí každé aplikace Laravel. Pomáhá vám sledovat chyby, monitorovat chování systému a efektivně ladit. Laravel používá výkonný Monolog knihovna pod kapotou, která nabízí flexibilní a konfigurovatelné protokolování.
V této příručce se dozvíte vše, co potřebujete vědět o souborech protokolu Laravel, včetně jejich umístění, jak řešit chyby oprávnění, co dělat, když chybí protokoly, a jak nakonfigurovat Laravel tak, aby vytvářel soubor protokolu denně.
Umístění a cesta k souboru protokolu v systému Laravel
Ve výchozím nastavení ukládá Laravel své soubory protokolu do adresáře storage/logs adresář. Nejčastěji se setkáte s následujícím souborem:
storage/logs/laravel.log
Sem se zapisují všechny protokoly aplikace, pokud není nakonfigurováno jinak.
Aktuální konfiguraci protokolu si můžete ověřit kontrolou pole config/logging.php soubor. Výchozí kanál je obvykle nastaven na stack, který zahrnuje jeden nebo více základních kanálů, jako např. single or daily:
// config/logging.php'default' => env('LOG_CHANNEL', 'stack'),
Poté zkontrolujte stack a zjistit, které kanály protokolu obsahuje:
'stack' => [ 'driver' => 'stack', 'channels' => ['single'], // or ['daily'] depending on your setup 'ignore_exceptions' => false,],
Chcete-li ověřit skutečný používaný soubor, zkontrolujte konfiguraci cílového ovladače. Například pro single řidič:
'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log'), 'level' => env('LOG_LEVEL', 'debug'),],
Oprava problémů s odepřením oprávnění
Pokud se zobrazí chyba, jako například:
Could not open stream: Permission denied
to znamená, že Laravel nemá oprávnění zapisovat do souboru protokolu nebo do souboru storage/logs adresář.
Řešení:
Zajistěte, aby uživatel webového serveru (např, www-data v Ubuntu) má oprávnění k zápisu do adresáře storage adresář.
sudo chown -R www-data:www-data storagesudo chmod -R 775 storage
Pokud používáte systém MacOS nebo Windows, ujistěte se, že má váš uživatel místního prostředí rovnocenné právo zápisu.
⚠️ Tip: Nikdy nepoužívejte
chmod -R 777ve výrobě, pokud to není dočasně nutné. Poskytuje plný přístup všem a představuje bezpečnostní riziko.
Pokud se změny oprávnění neprojeví, nezapomeňte vymazat konfiguraci z mezipaměti:
php artisan config:clearphp artisan cache:clear
Co dělat, když chybí soubor protokolu
Někdy se vaše laravel.log soubor nemusí často existovat, protože byl smazán nebo do něj Laravel ještě nezapsal.
Jak to napravit:
-
Ruční vytvoření souboru:
touch storage/logs/laravel.log -
Zajistěte správná oprávnění:
sudo chown www-data:www-data storage/logs/laravel.logsudo chmod 664 storage/logs/laravel.log -
Zkuste zapsat testovací zprávu:
Log::info('Laravel log test message');
Pokud je vše správně nakonfigurováno, začne nyní Laravel automaticky zapisovat do souboru protokolu.
Oprava chyby "Nelze otevřít v režimu připojování"
Tato chyba obvykle vypadá takto:
ErrorException: file_put_contents(/path/to/storage/logs/laravel.log): Failed to open stream: Permission denied
Stává se to, když se Laravel pokouší zapsat protokoly, ale nemůže je připojit k souboru, obvykle kvůli chybějícím oprávněním nebo vlastnictví adresáře.
Kroky k nápravě:
-
Zkontrolujte oprávnění adresářů a souborů:
ls -ld storage/logsls -l storage/logs/ -
Podle potřeby upravte oprávnění a vlastnictví:
sudo chown -R www-data:www-data storage/logssudo chmod -R 775 storage/logs -
Pokud problém přetrvává, vytvořte soubor protokolu znovu (pouze pokud nedochází ke kritickým zápisům):
rm storage/logs/laravel.logtouch storage/logs/laravel.logsudo chown www-data:www-data storage/logs/laravel.log
Poté aplikaci znovu načtěte a Laravel bude pokračovat v protokolování jako obvykle.
Konfigurace Laravelu pro vytváření souboru protokolu denně
Pro lepší organizaci Laravel podporuje denní rotace protokolů. To znamená, že se každý den vytvoří nový soubor protokolu, což usnadňuje správu a kontrolu protokolů.
Chcete-li povolit denní protokolování, otevřete config/logging.php a nastavte výchozí kanál protokolu na daily:
'default' => env('LOG_CHANNEL', 'daily'),
Poté vyhledejte a nakonfigurujte daily kanál:
'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log'), 'level' => env('LOG_LEVEL', 'debug'), 'days' => 14, // Keep logs for 14 days],
Můžete nastavit days pro kontrolu, jak dlouho Laravel uchovává staré soubory protokolu před jejich odstraněním. Nastavení days to 0 zakáže automatické mazání.
Při konfiguraci bude Laravel automaticky generovat soubory jako:
storage/logs/laravel-2025-10-09.logstorage/logs/laravel-2025-10-10.log
Pokud změníte LOG_CHANNEL ve vašem .env, běžet:
php artisan config:cache
Vytvoření vlastního kanálu denního záznamu
Pokud potřebujete samostatné soubory protokolu (například jeden pro platební operace), definujte vlastní kanál v poli config/logging.php:
'channels' => [ 'payments' => [ 'driver' => 'daily', 'path' => storage_path('logs/payments.log'), 'level' => 'info', 'days' => 30, ],],
Pak jej použijte ve svém kódu:
Log::channel('payments')->info('Payment processed successfully.');
Ověření nastavení protokolu
Po provedení změn otestujte konfiguraci protokolování:
Log::info('Daily log configuration verified successfully.');
Pak zkontrolujte storage/logs adresář, měli byste vidět nově vytvořený soubor protokolu pro dnešní den.
V případě potřeby můžete také přistupovat k základní instanci Monologu:
$monolog = Log::getLogger();
Souhrn
| Úkol | Příkaz nebo soubor |
|---|---|
| Výchozí cesta protokolu | storage/logs/laravel.log |
| Zkontrolujte konfiguraci | config/logging.php |
| Oprava oprávnění | sudo chown -R www-data:www-data storage && sudo chmod -R 775 storage |
| Vytvoření chybějícího souboru protokolu | touch storage/logs/laravel.log |
| Povolení denních záznamů | 'default' => 'daily' in config/logging.php |
| Vymazání konfigurační mezipaměti | php artisan config:clear / php artisan config:cache |
Závěrečné myšlenky
Systém protokolování v systému Laravel je robustní a vysoce konfigurovatelný. Pokud víte, kam se protokoly ukládají, jak řešit problémy s oprávněním a jak konfigurovat denní nebo vlastní kanály, budete mít plnou kontrolu nad tím, jak vaše aplikace zaznamenává informace. To zajistí přehlednější ladění, snadnější údržbu a spolehlivé monitorování ve všech prostředích.