Arquivos de log’s são muito úteis durante o processo de desenvolvimento do sistema para encontrar problemas, conflitos, e identificar falhas de funcionamento.
O Magento oferece 3 (três) controles de log’s:
1. Log de monitoramento de navegação. Ver post: Limpar tabela de Log’s.
2. Log de falha no sistema. Ver post: Error log record number.
3. Log de eventos e exceções. Que veremos neste post.
Por que eu deveria
Enquanto você está montando sua loja, desenvolvendo módulos, customizando páginas, instalando extensões, é muito importante que você monitore os eventos e exceções que ocorrem no seu sistema.
É muito comum as pessoas começarem a personalizar a loja inteira, e “do nada” algo para de funcionar como deveria, seja um cadastro de endereços, um meio de pagamento, ou avaliação de produtos.
Você pode estar com problemas/conflitos no código que não chegam a gerar uma falha de continuidade no sistema, e por isso não possui o famoso Error log record number. O que não significa que não existam erros.
Como usar
Assim que você instala o Magento o controle de log’s de eventos e exceções vem desligado. Pois não é algo essencial para o funcionamento do sistema.
Mas fundamental para quem está desenvolvendo. Por isso acesse:
Sistema > Configuração > Avançado > Desenvolvedor [Configurações de Log]
E altere a opção Habilitado para “Sim” e clique em salvar.
Veja ainda que você pode personalizar o nome dos arquivos. E abaixo do nome ele indica o diretório onde estes arquivos serão gerenciados.
Como ler
Agora que seu sistema está gerando arquivos de log, você pode acompanhar os arquivos para identificar possíveis problemas, basta acessar o diretório indicado:
sua instalação > var > log
Ambos os arquivos estarão listados system.log e exception.log.
Onde você pode usar o system.log para gerar um debug do código, com mensagens do tipo “metodo chamado e retornando valor X“. Ou ainda gerar um alerta do tipo “valor inválido para cálculo na assinatura do método“.
E o arquivo exception.log é onde os erros são monitorados. São erros similares aos gerados pelo Error log record number, a diferença é que eles não chegam a impedir o sistema de continuar funcionando. Exemplo:
2013-07-24T07:23:14+00:00 ERR (3): exception 'Exception' with message 'Strict Notice: Non-static method Mage_Core_Model_Locale::date() should not be called statically, assuming $this from incompatible context in /Users/mariosam/app/design/frontend/base/default/template/catalog/product/widget/new/content/new_list.phtml on line 74' in /Users/mariosam/app/code/core/Mage/Core/functions.php:245 Stack trace: #0 /Users/mariosam/app/design/frontend/base/default/template/catalog/product/widget/new/content/new_list.phtml(74): mageCoreErrorHandler(2048, 'Non-static meth...', '/Users/mariosam...', 74, Array) #1 /Users/mariosam/app/code/core/Mage/Core/Block/Template.php(216): include('/Users/mariosam...')
Ele continua até o número #20, #30, #40 {main}. Mas o que interessa mesmo são as primeiras linhas.
E caso você não saiba interpretar a mensagem, copie a informação e leve para o fórum Bragento para obter ajuda.
Usando o log
Se você é um desenvolvedor, pode utilizar os arquivos de log para debugar seu código. Basta utilizar o código abaixo:
Log de exceção:
... } catch(Exception $e) { Mage::logException($e); }
A assinatura do método é esta:
public static function logException(Exception $e)
Log de eventos:
Mage::log('sua msg aqui...');
A assinatura do método é esta:
public static function log($message, $level = null, $file = '', $forceLog = false)
Veja que é possível informar além da mensagem, um grau (level) de importância, o nome de um arquivo (file) para gravar o log, e se você deve forçar a gravação do arquivo mesmo com sistema de log’s desligado.
Quer outras dicas de como usar o arquivo de log para debug? Veja o wiki no site oficial (em inglês): Magento Debugging Tips.
Sucesso!