Contextualizando
O que é um log?
Log de dados é uma expressão utilizada para descrever o processo de registro de eventos relevantes num sistema computacional. Esse registro pode ser utilizado para restabelecer o estado original de um sistema ou para que um administrador conheça o seu comportamento no passado. Um arquivo de log pode ser utilizado para auditoria e diagnóstico de problemas em sistemas computacionais
Wikipedia
Existem inúmeras formas da criação de logs, a convenção adotada pela comunidade do PHP se tornou uma PSR e o Magento 2 a utiliza por padrão, implementando a interface \Psr\Log\LoggerInterface
. Saiba mais a página oficial sobre na PSR-3 - Logger Interface.
Código para criar um Log
Para criar um log personalizado no Magento 2 é necessário estender a classe por padrão \Monolog\Logger
que implementa a \Psr\Log\LoggerInterface
. Este tipo de arquivo deve seguir a estruturas de pastas \{Vendor}\{Module}\Logger\{Loggername}.php
.
Caso seja necessário criar algum novo tipo de log é neste arquivo que será implementado o método e/ou o nome, tipo e valor do log.
<?php namespace {Vendor}\{Module}\Logger; use Monolog\Logger; class {Loggername} extends Logger { public const {CUSTOM_LOG_NAME} = {VALUE}; protected static array $levels = [ self::DEBUG => 'DEBUG', self::INFO => 'INFO', self::NOTICE => 'NOTICE', self::WARNING => 'WARNING', self::ERROR => 'ERROR', self::CRITICAL => 'CRITICAL', self::ALERT => 'ALERT', self::EMERGENCY => 'EMERGENCY', self::{CUSTOM_LOG_NAME} => '{CUSTOM_LOG_NAME}', ]; public function {methodName}(string $message, array $context = []): bool { return $this->addRecord(static::{CUSTOM_LOG_NAME}, $message, $context); } }
Handler
A classe Handler define o tipo do log e o caminho do arquivo que será criado para a gravação das mensagens. O caminho do arquivo inicia a partir do diretório raiz do Magento. Este tipo de arquivo deve seguir a estruturas de pastas \{Vendor}\{Module}\Logger\{HandlerName}.php
. Cada arquivo de Handler deve estender a classe \Magento\Framework\Logger\Handler\Base
.
<?php namespace {Vendor}\{Module}\Logger; use {Vendor}\{Module}\Logger\{Loggername}; use Magento\Framework\Logger\Handler\Base; class {HandlerName} extends Base { protected int $loggerType = {Loggername}::{CUSTOM_LOG_NAME}; protected string $fileName = '/var/log/{fileName}.log'; }
Tipos de Logs
Constantes | Severidade | Descrição |
---|---|---|
DEBUG | 100 | Detalhes de informações do no processo de debug. |
INFO | 200 | informação de eventos. |
NOTICE | 250 | Eventos incomuns. |
WARNING | 300 | Evento que ocorrem como excessões, mas não são erros (depreciações, avisos, etc). |
ERROR | 400 | Erros em tempo de execução. |
CRITICAL | 500 | Condições críticas. |
ALERT | 550 | Alertas de ações que devem ser tomadas imediatamente. |
EMERGENCY | 600 | Alertas urgentes. |
di.xml
O arquivo di.xml
será definido os tipos de argumentos que será inseridos nas classes criadas. Este tipo de arquivo deve seguir a estruturas de pastas \{Vendor}\{Module}\etc\{area}\di.xml
.
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="{Vendor}\{Module}\Logger\{HandlerName}"> <arguments> <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument> </arguments> </type> <type name="{Vendor}\{Module}\Logger\{Loggername}"> <arguments> <argument name="name" xsi:type="string">{logName}</argument> <argument name="handlers" xsi:type="array"> <item name="system" xsi:type="object">{Vendor}\{Module}\Logger\{HandlerName}</item> </argument> </arguments> </type> </config>
Finalização
🔗 Valores entre chaves ({test}
) devem ser alterados na implementação do código.
Habilitando as alterações
Apague os arquivos que são gerados na compilação do Magento e execute o comando PHP para gerar a configuração das injeções de dependência e todas as classes ausentes que precisam ser geradas (proxys, interceptors, etc) e para limpar todos os caches de armazenamento em cache do processos.
rm -rf var/generation/ rm -rf generated/ php bin/magento setup:di:compile php bin/magento cache:clean php bin/magento flush
Diretórios e Arquivos
Segue a a lista de diretórios e arquivos que devem ser criados.
- app/ - code/ - {Vendor}/ - {Module}/ - etc/ - {area}/ - di.xml - module.xml - Logger/ - {HandlerName}.php - {Loggername}.php - registration.php - composer.json
Top comments (0)