Começando com o Telescópio Laravel – o que ele pode fazer por você?

Adewale Abati ? Blocked Unblock Seguir Seguindo 14 de dezembro de 2018

Ao criar aplicativos da web, é quase impossível evitar erros. Isso pode variar de um erro de digitação a um ponto-e-vírgula esquecido ou a uma função indefinida. Mas o mais importante, você quer ter uma ideia de tudo que está acontecendo em seu aplicativo, como e quando eles acontecem. Ter acesso a essas informações oferece muito mais controle na redução de bugs e na identificação de oportunidades para melhorar seu aplicativo.

Telescópio Laravel lhe dá exatamente esse poder. É um incrível assistente de depuração recentemente introduzido no Laravel, que torna o desenvolvimento fácil com ferramentas que permitem não apenas monitorar e depurar vários aspectos do seu aplicativo, mas também ter acesso a uma ampla gama de informações que você normalmente não teria acesso direto para.

Telescópio Laravel fornece insights sobre as solicitações que entram em seu aplicativo, exceções, entradas de log, consultas de banco de dados, trabalhos em fila, e-mail, notificações, cache e muito mais. Também mostra como partes diferentes do seu aplicativo funcionam juntas. Você pode descobrir quais páginas estão funcionando corretamente e quais consultas foram executadas quando uma solicitação foi feita para uma determinada página.

Neste artigo, abordaremos os incríveis recursos do telescópio, como configurá-lo e o que ele pode fazer por você.

Alternativas anteriores

Se a depuração no Laravel não for estranha a você, é provável que você tenha usado as ferramentas a seguir no passado para atender às suas necessidades de depuração.

Relógio

O Clockwork fornece uma visão do seu tempo de execução de aplicativo PHP, incluindo dados de solicitação, log de aplicativo, consultas de banco de dados, uso de cache, visualização de execução e muito mais.

O Clockwork fornece uma extensão do Chrome ou Firefox , ou uma interface do usuário da web e um componente do servidor para coletar dados que se integram facilmente a qualquer projeto PHP, incluindo suporte pronto para as principais estruturas.

Laravel Debugbar

Laravel Debugbar adiciona uma pequena barra na parte inferior do navegador com informações de depuração (por exemplo, o número de consultas). Com o Eloquent, pode ser fácil fazer solicitações de banco de dados desnecessárias, então o Debugbar ajuda a identificar códigos que não são de alto desempenho. Ele exibe esse direito ao lado do console do desenvolvedor na parte inferior do navegador.

Visualizador de log do Laravel

O visualizador de log do Laravel permite que você veja os logs do arquivo de storage/logs no navegador como uma linda tabela HTML. Os logs estarão disponíveis em /logs .

Como funciona o Telescópio Laravel?

Telescópio Laravel fornece uma interface de usuário muito poderosa para você ver, monitorar e depurar vários aspectos da sua aplicação. De solicitações para comandos executados no terminal e até mesmo trabalhos agendados. Isso é feito através de vários observadores que foram configurados para monitorar essas coisas.

Esses observadores foram projetados para coletar informações sobre cada solicitação que chega ao seu aplicativo, fornecer informações sobre consultas de banco de dados, quanto tempo levam para executar, exceções encontradas, eventos, filas, comandos e muito mais.

Instalação

O Telescópio Laravel foi introduzido na versão mais recente do Laravel, que é de 5,7 e requer um mínimo de Laravel 5.7.7 para funcionar. No momento da redação deste artigo, o Laravel está na versão 5.7.14.

Uma vez que você tenha o seu aplicativo do Laravel pronto, você pode instalar o Telescope através do compositor executando:

 composer require laravel/telescope 

Você também pode especificar durante a instalação se deseja que ele funcione somente no seu ambiente de desenvolvimento usando o sinalizador --dev . Para fazer isso, você terá que executar:

 composer require laravel/telescope --dev 

Uma vez feito isso, você pode publicar os recursos do telescópio e executar migrações:

 php artisan telescope:install 
 php artisan migrate 

O Laravel vem com duas migrações já em vigor para você, a tabela de users e a tabela password_resets . Quando você executa a migração, três tabelas também são criadas para lidar com operações de telescope_entries , como telescope_entries_tags , telescope_monitoring e telescope_monitoring .

Características

Agora que instalamos e configuramos o Telescope, visitamos /telescope em seu projeto e você chegará no painel do telescópio com guias na página de listagem à esquerda que destacam os recursos.

Cada um dos recursos listados acima tem sua própria página e observador configurados no Telescópio. Agora, vamos passar pelo que cada um deles nos permite monitorar e os detalhes que eles fornecem.

solicitações de

Esta página de recursos lista todas as solicitações HTTP que entram no aplicativo e a hora em que a solicitação foi feita. Ele também fornece informações adicionais sobre cada solicitação clicando no ícone de olho à direita de cada entrada.

Para cada solicitação feita, você também pode visualizar dados relacionados de outros observadores. Por exemplo, executei uma consulta rápida para buscar todos os usuários na página inicial e eles aparecem nas solicitações, juntamente com o tempo de duração da consulta. Essas informações adicionais não se limitam apenas às consultas e podem mostrar informações sobre qualquer outro observador que foi acionado pela solicitação.

Comandos

O telescópio não se limita apenas às ações no navegador ou nos pedidos, mas também abrange os comandos do Artisan executados no terminal também. A página de comandos lista todos os comandos que foram executados no terminal e mostra se eles foram bem sucedidos usando seus códigos de saída. Códigos de saída geralmente são 0 para quando é um comando bem-sucedido e retorna qualquer coisa que varie de 1 a 255 se outro resultado for encontrado. Um exemplo, como mostrado abaixo, mostra detalhes do comando migrar o artesão php executado no terminal anteriormente enquanto estávamos configurando o telescópio.

Cronograma

Em vez de ter várias entradas de cron para cada tarefa que você precisa agendar no seu servidor, o Laravel fornece o escalonador que permite que você as defina dentro do próprio Laravel. A página de agendamento lista todos os comandos para essas tarefas agendadas que foram executadas, fornecendo informações sobre quando isso aconteceu e o agendamento do cron. Se você tiver um comando que forneça uma mensagem inspiradora em intervalos usando o php artisan inspire do Laravel, você poderá rastrear o status toda vez que essa programação for executada.

Empregos

A página de trabalhos também lista todos os trabalhos que foram executados e seu status resultante. Em comparação com a Horizon, que lida com suas filas Redis alimentadas pelo Laravel, o Telescope funciona para todos os drivers de fila incluídos no Laravel. Na página de detalhes das tarefas, você pode ver o número de tentativas, timeouts, fila e o nome da classe da tarefa executada etc. Aqui eu tenho uma tarefa SendWelcomeEmail que é acionada sempre que um novo usuário se inscreve. Eu sou capaz de ver que falhou e depois descobrir por que isso aconteceu.

Exceções

Com o Telescope, as exceções tornaram-se fáceis de ver. A página de exceção lista todas as exceções e o número de vezes que ocorreram.

Passando para a página de detalhes, ela mostra a mensagem de erro exata, a linha do seu código que a causou e até mesmo o rastreamento completo da pilha que está formatado e é divertido de se ver ?.

Logs

A página de registros mostra uma lista de mensagens de log, nível e hora em que cada um deles aconteceu. Como todas as outras páginas, a página de detalhes individuais mostra mais informações, incluindo dados de contexto que você pode ter passado adiante. Isso é melhor do que ter que percorrer os arquivos de texto em storage/logs para obter informações de log.

Lixões

Na maioria das vezes, quando me deparo com um bug, eu só quero ver o estado atual de variáveis ou objetos ou qualquer outra informação na tela usando o método dump() . Fazer isso normalmente resulta na formatação da página ficando um pouco distorcida, mas com o Telescope, se você usar o método dump() em seu código e abrir a página Dumps no Telescope, sua página aparecerá normal e a saída dos dados irá aparecer na página Dumps.

Um comportamento que notei com Dumps, no entanto, é que, se você tentar despejar uma função que gera um valor diretamente, a página de dumps mostrará apenas o valor retornado e a saída ainda será mostrada na sua página. Por exemplo:

 function ace() { 
  echo "Adewale"; 
  return false; 
 } 
 dump(ace()); 

Aparecerá na página de dumps como:

Consultas

A página de consultas funciona muito como o Debugbar mencionado acima. Ele lista todas as suas consultas ao banco de dados, quanto tempo elas demoraram, em quais solicitações, etc. Você pode facilmente usar essa página para definir uma referência para quais consultas são consideradas lentas uma vez e demorar mais do que uma hora específica. Você também pode definir isso em config/telescope.php . Na imagem anexada abaixo, posso ver que a consulta select * from 'users' foi executada três vezes e teve uma duração diferente a cada vez.

Modelos

A página Modelos acompanha todas as atividades que acontecem com seus modelos. O modelo do User vem por padrão com o Laravel. Portanto, como exemplo, todas as ações realizadas no modelo do User serão exibidas nesta página. Desde quando você cria um novo usuário ou até mesmo atualiza o perfil do usuário, tudo é exibido.

Eventos

A página de eventos mostra uma lista de todos os seus eventos com informações adicionais. Incluindo a hora, os ouvintes e quais eventos foram transmitidos com uma tag.

Mail, notificações, cache e redis

A página de e-mail também mostra uma lista de todos os e-mails enviados, para quem foi enviado, a hora em que foi enviado, o assunto e até mesmo a visualização do e-mail.

A página de notificações mostra uma lista de notificações, os canais em que foram criados, a hora e quem foi o destinatário da notificação.

A página de cache mostra uma lista de ocorrências, erros, atualizações etc. do cache. Você pode ver a solicitação que a acionou e muito mais.

A página de redis também é bastante semelhante à página de cache. Mostra quanto tempo demorou, quando aconteceu e o pedido que o acionou.

Configuração adicional

Telescope publica um arquivo de configuração localizado em config/telescope.php que você pode usar para configurar as várias opções de observador e caminho. Cada uma dessas configurações vem com uma descrição de sua finalidade, facilitando a compreensão do que ela deve fazer.

Como mencionado acima, o Telescope é aberto no /telescope por padrão em seu aplicativo, mas você pode alterá-lo para o que mais lhe convier.

Telescópio também permite que você especifique quem pode acessá-lo em produção, isso é feito especificando uma lista de e-mails no provedor de serviços de telescópio.

 // app/Providers/TelescopeServiceProvider.php 
 ... 
 /** 
 * Register the Telescope gate. 
 * 
 * This gate determines who can access Telescope in non-local environments. 
 * 
 * @return void 
 */ 
 protected function gate() { 
  Gate::define('viewTelescope', function ($user) { 
  return in_array($user->email, [ 
  // 
  ]); 
  }); 
 } 

Você deveria usar o Telescópio em produção?

Sim, você pode usar o telescópio em produção. Ele possui ferramentas de autorização internas para proteger dados privados e você pode até mudar o caminho, como mencionado acima, para outra coisa. Para outras técnicas de proteção, você pode filtrar quais dados são monitorados ou armazenados, agendar trabalhos que excluem entradas antigas e também escolher quais dos observadores você deseja ativar ou desativar.

Conclusão

O telescópio nos dá uma ótima visão e visão geral do que acontece nos aplicativos do Laravel e você definitivamente deve começar a usá-lo em todos os seus projetos.

Plug: LogRocket , um DVR para aplicativos da web

https://logrocket.com/signup/

LogRocket é uma ferramenta de registro de front-end que permite que você repita problemas como se eles tivessem ocorrido em seu próprio navegador. Em vez de adivinhar por que os erros ocorrem ou solicitar aos usuários capturas de tela e log dumps, o LogRocket permite que você repita a sessão para entender rapidamente o que deu errado. Ele funciona perfeitamente com qualquer aplicativo, independentemente do framework, e possui plugins para registrar o contexto adicional do Redux, Vuex e @ ngrx / store.

Além de registrar as ações e o estado do Redux, o LogRocket registra logs do console, erros de JavaScript, rastreamentos de pilha, solicitações / respostas de rede com cabeçalhos + corpos, metadados do navegador e logs personalizados. Ele também instrumenta o DOM para gravar o HTML e CSS na página, recriando vídeos com pixels perfeitos até mesmo dos aplicativos de página única mais complexos.

Experimente Grátis.