Introdução: Por que o logging é necessário em PHP?
Logging não é apenas registrar erros em um arquivo. É sua principal ferramenta para monitoramento, depuração e análise do funcionamento de uma aplicação web. Sem um logging de qualidade, você ficará adivinhando por que o site caiu ou por que o usuário não consegue finalizar um pedido. Para desenvolvedores iniciantes em PHP, configurar o logging correto é o primeiro passo para o desenvolvimento profissional.
Imagine que sua aplicação é uma caixa-preta. Os logs são a única maneira de olhar para dentro, entender o que está acontecendo a cada momento. Neste artigo, abordaremos as melhores práticas que ajudarão você a evitar erros típicos de iniciantes e construir um sistema de monitoramento confiável.
1. Fundamentos: funções nativas do PHP para logging
O PHP oferece várias funções nativas para trabalhar com logs. A mais simples e popular é error_log(). Ela permite enviar uma mensagem para o log do sistema do servidor ou para um arquivo especificado.
Exemplo básico de uso do error_log()
// Registro mais simples de erro no log do sistemaerror_log("Esta é uma mensagem de erro", 0);
// Registro em um arquivo específicoerror_log("Erro de conexão com o banco de dados", 3, "/var/log/php_errors.log");
// Registro com indicação do tipo de mensagemerror_log("Aviso: requisição lenta", 4);No entanto, usar error_log() diretamente em produção não é uma boa ideia. Primeiro, você mistura diferentes tipos de mensagens. Segundo, é difícil gerenciar o formato e a rotação dos logs. Para projetos sérios, é melhor usar bibliotecas especializadas.
Configuração do php.ini para logging aprimorado
Antes de escrever código, certifique-se de que seu php.ini está configurado corretamente:
; Ativa o logging de erroslog_errors = On; Caminho para o arquivo de logerror_log = /var/log/php_errors.log; Tamanho máximo do log (em bytes)log_errors_max_len = 1024; Desativa a exibição de erros na tela (para produção)display_errors = Off; Ativa o logging de todos os níveis de erroerror_reporting = E_ALL2. Níveis de logging: de DEBUG a CRITICAL
Um dos principais erros de iniciantes é registrar todas as mensagens em uma única pilha. O logging profissional usa níveis de gravidade. Isso ajuda a filtrar rapidamente os logs e não perder erros críticos entre mensagens informativas.
Níveis padrão PSR-3
A comunidade PHP adotou o padrão PSR-3, que define 8 níveis de logging:
- DEBUG — informações detalhadas de depuração (usado apenas em desenvolvimento)
- INFO — mensagens informativas (usuário registrado, pedido criado)
- NOTICE — eventos normais, mas significativos (uso de funções obsoletas)
- WARNING — avisos (ex.: requisição lenta, espaço em disco baixo)
- ERROR — erros que exigem atenção (falha ao conectar ao banco de dados)
- CRITICAL — erros críticos (componente principal do sistema indisponível)
- ALERT — requer intervenção imediata (invasão, falha do sistema)
- EMERGENCY — sistema inoperante
Exemplo de implementação de níveis com Monolog
A melhor biblioteca para logging em PHP é o Monolog. Ela é totalmente compatível com PSR-3 e fácil de configurar:
use Monolog\\Logger;use Monolog\\Handler\\StreamHandler;use Monolog\\Handler\\RotatingFileHandler;use Monolog\\Level;
// Cria um logger com nome de canal$log = new Logger('app');
// Adiciona um handler para todos os níveis$log->pushHandler(new StreamHandler('/var/log/app.log', Level::Debug));
// Arquivo separado para erros críticos$log->pushHandler( new RotatingFileHandler('/var/log/critical.log', 30, Level::Critical));
// E