Como visualizar um log do Laravel em tempo real
Muitas vezes é necessário descobrir a origem de um erro que não é visível diretamente na aplicação, por exemplo, quando estamos rodando uma aplicação em produção. Nesse caso, geralmente as aplicações costumam escrever um log de erro, descrevendo os detalhes do problema ocorrido.
O Laravel também faz uso desse recurso . O Laravel armazena os logs de erro por padrão na pasta storage/logs
. O arquivo gerado pode depender da sua configuração. Se sua aplicação estiver configurada como single
, dentro desta pasta conterá um arquivo chamado laravel.log
. Se estiver como daily
, que é maneira que costumo mais usar, ela terá o formato laravel-%Y-%m-%d.log.
Observação: Versões anteriores a 5.5, essa configuração é feita em config/app.php
. Já nas versões posteriores, é feita em config/logging.php
Toda vez que ocorre um erro em produção, o Laravel vai escrever todos os detalhes do erro nesse arquivo. E é com ele que vamos poder acompanhar em tempo real os logs gerados, através de um simples comando: O tail
.
Esse comando em sistemas Unix tem como finalidade ler o trecho final de algum arquivo. Quando adicionamos a opção -f
, além de ler o trecho final de um arquivo, o comando fica rodando, para que toda vez que haja novas linhas as mesmas sejam exibidas imediatamente.
Você basicamente pode fazer algo como:
tail -f storage/logs/laravel.log
Ou
tail -f storage/logs/laravel-2020-08-25.log
Uma boa forma de testar isso, é deixando dois terminais abertos e, após rodar tail -f
, produzir um erro proposital, como rodar um comando inexistente no artisan
. Assim:
php artisan xxx
Você verá algo parecido com isso no terminal onde roda o tail
:
[2020-08-25 14:16:44] local.ERROR: Command "xxx" is not defined. {"exception":"[object] (Symfony\\Component\\Console\\Exception\\CommandNotFoundException(code: 0): Command \"xxx\" is not defined. at /my-directory/vendor/symfony/console/Application.php:576)