Cursos Magento

Entenda o sistema de Logs no Magento 2

,

09 de outubro de 2018

Este é o primeiro artigo da série sobre Logs no Magento 2. Veremos como usar as classes e métodos nativos para logar informações em arquivos no Magento 2.

Como vimos anteriormente aqui no Magenteiro, quando queremos gravar alguma informação em arquivo para fins de debug ou log no Magento 1, podíamos usar o método Mage::log.

Com a mudança estrutural do Magento 2 e a introdução da injeção de dependências (saiba tudo sobre DI na aula 21 do curso de Magento 2) o método estático Mage::log não está mais disponível.

Entendendo o sistema de log no Magento 2

Quem grava logs no Magento 2?

O Magento 2 possuí a classe \Psr\Log\LoggerInterface para gravar informações em arquivos de log. Mais especificamente no arquivo var/log/debug.log e var/log/system.log.

Mas se buscarmos informações de injeção de dependências desta classe, veremos que ela é substituída. Isto é feito através do uso de dependency injection.

Mostrando informações da preferência da classe de logs no Magento 2

Usando bin/magento dev:di:info para obter informações de injeção de dependências da classe de Log no Magento 2

Por isso, ao chamarmos a classe \Psr\Log\LoggerInterface, a classe que teremos é a \Magento\Framework\Logger\Monolog, injetada em magento2-base/app/etc/di.xml.

Por sua vez ela faz uso da classe Monolog, muito popular após o surgimento do composer no mundo PHP.

 

Os handlers de log no Monolog e no Magento 2

A classe Monolog suporta diversos “handlers“. Ou seja, ela permite que injetemos novas classes para tratar o que está sendo gravado onde e como quisermos. Vários desses handlers já estão disponíveis no packagist para os mais diversos fins e integrações com diversos serviços. Por exemplo, além de gravar logs em arquivos, também podemos enviar e-mails, gravar na base, etc.

Os handlers são processados em sequência. Cada handler na cadeia pode pegar a mensagem que está sendo gravada e quebrar a cadeia de handlers ou dar sequência ao próximo handler da sequência.

Uma das implementações nativas do Magento é o Magento\Developer\Model\Logger\Handler\Debug, que é adicionado aos $handlers do Monolog quando o debug está ativo em Advanced>Developer>Debug>Log to File (dev/debug/debug_logging).

Screenshot do Debug mostrando os handlers do Monolog

Screenshot do Debug mostrando os handlers do Monolog

Veja que no exemplo acima temos 2 handlers sendo chamados ao invocar o método debug (mostrado abaixo). Por isso, muitas vezes as mensagens de log são adicionadas tanto ao arquivo system.log como no debug.log.

Gravando logs no Magento 2

A classe \Psr\Log\LoggerInterface possuí 8 métodos básicos nativos para gravar logs:

A criticidade dos logs são baseados na RFC-5424. No exemplo acima, listei cada um deles por ordem de importância.

Os primeiros 7 métodos gravarão informações de log no arquivo [pastamagento]/var/log/system.log, enquanto o último (debug) gravará em [pastamagento]/var/log/debug.log e só é gravado quando o debug está ativo em Advanced>Developer>Debug>Log to File (dev/debug/debug_logging).

 

No próximo artigo da série, veja como gravar arquivos customizados de log no Magento 2.

Ricardo Martins

Desenvolvedor web há mais de 15 anos, desde 2011 totalmente especializado em Magento, ajudo na criação de conteúdo, e cursos online sobre Magento - hoje com mais de 7000 alunos de 97 países - e criador do módulo PagSeguro Transparente para Magento, usado em mais de 12 mil lojas.

Últimos posts por Ricardo Martins (exibir todos)

Comentários