No Magento 1, se você quisesse enviar uma mensagem para os logs, usaria um método estático na Mage
classe global .
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Existe um equivalente no Magento 2? Eu pesquisei através do site docs dev e não vi nada óbvio que saia. Há este artigo do Inchoo , mas é de quase um ano atrás e muita coisa mudou desde então.
Como desenvolvedor do módulo Magento 2, se eu quiser substituir código como o seguinte no Magento 1
Mage::log($message, Zend_Log::DEBUG, "my-log-file.log");
Qual é o mínimo necessário que preciso fazer?
magento2
log
psr-logger
Alan Storm
fonte
fonte
No magento2, você também pode escrever nos logs usando a
Zend
biblioteca como abaixo:Editado
Você também pode imprimir objetos e matrizes PHP como abaixo:
fonte
PHP objects
não são impressas ...fonte
Você precisa injetar a classe \ Psr \ Log \ LoggerInterface no construtor para chamar o objeto de logger
Para imprimir a string Saída em debug.log
Para imprimir a saída da matriz no system.log
fonte
Se você deseja usar o criador de logs padrão, mas o arquivo personalizado para criação de log (ou outra lógica customizada), é necessário usar o manipulador de criador de logs personalizado:
Em seguida, adicione-o como manipulador em algum lugar do seu código:
Um passo atrás na conveniência IMO
fonte
$this->logger->info($message, $level);
- como você diz "usar meu contexto"?De uma maneira simples, se você não deseja criar injeção de dependência ou qualquer outra coisa que use abaixo do código, ele armazenará o
system.log
arquivo de logonIsso é tudo..
fonte
Não, não há equivalente direto. Está um pouco complicado agora.
Consulte: Registrando em um arquivo personalizado no Magento 2
fonte
Inclua a classe psr logger em seu arquivo usando use e chame o
addDebug()
método Isso imprimirá a mensagem de log novar/log/debug.log
arquivofonte
ATUALIZADO: 19/08/2019
Se você estiver procurando um manipulador de log personalizado e elegante, recomendo que você use Tipos Virtuais (que não precisam adicionar nenhum código PHP)
Inspirados na resposta de Petar Dzhambazov e halk , senhoras e senhores, apresentei uma maneira melhor e mais curta, em vez de duplicar o código de log personalizado o tempo todo.
USO
Isso é tudo, sem arquivos ou linhas PHP extras - use as vantagens do Magento 2: Tipos Virtuais !!!
Espero que isto ajude ;)
fonte
Há uma atualização para o logger em 2.2. Você pode ativar o criador de logs para o modo de produção executando o SQL:
Em seguida, você pode usar o
\Psr\Log\LoggerInterface
log de impressão como as respostas acima:fonte
In the Magento admin panel, go to "Stores" -> "Configuration" -> "Advanced" -> "Developer" -> "Debug" -> "Log to File". Setting this to "Yes" will cause debug information to be logged to var/log/debug.log in your Magento application directory.
Injetar
$logger
classe no construtor\Psr\Log\LoggerInterface $logger
Isso é conseguido passando $ logger como argumento.
Inicializar
$logger
no construtorNa função da classe que você deseja registrar, use a linha abaixo
fonte
Se você precisar em sua classe única com arquivo de log personalizado:
fonte
Coloque o código do logger PSR em seu construtor:
então você pode usar em sua função como:
fonte