Registro para PHP: melhores soluções
O registro é uma parte essencial de qualquer aplicação PHP séria. Ele ajuda a rastrear erros, analisar o comportamento dos usuários, realizar auditorias de segurança e depurar código. Neste artigo, veremos as melhores bibliotecas para registro em PHP, suas características e exemplos de uso.
Por que o registro é necessário?
Sem registro, o desenvolvedor muitas vezes fica "cego" quando surgem problemas. Um sistema de registro de qualidade permite:
- Encontrar e corrigir rapidamente erros em ambiente de produção
- Coletar estatísticas e analisar o desempenho
- Garantir conformidade com padrões de segurança (PCI DSS, GDPR)
- Rastrear atividades suspeitas
Padrão PSR-3 (Logger Interface)
A maioria das bibliotecas modernas para PHP segue o padrão PSR-3, que define uma interface unificada para loggers. Isso permite substituir facilmente uma biblioteca por outra sem alterar o código da aplicação.
Níveis principais de registro segundo PSR-3:
emergency— sistema inoperantealert— intervenção imediata necessáriacritical— erro críticoerror— erro que não requer intervenção imediatawarning— avisonotice— evento normal, mas significativoinfo— mensagem informativadebug— informação de depuração
Melhores bibliotecas para registro em PHP
1. Monolog
Monolog é o padrão de facto para registro em PHP. Ele suporta PSR-3, possui uma enorme quantidade de "handlers" e "formatters". Instala-se via Composer:
composer require monolog/monologExemplo de uso básico:
<?phpuse Monolog\\Logger;use Monolog\\Handler\\StreamHandler;
$log = new Logger('my_app');$log->pushHandler(new StreamHandler('/var/log/app.log', Logger::WARNING));
$log->warning('Aviso: limite de requisições excedido');$log->error('Erro de conexão com o BD', ['db' => 'mysql', 'time' => 0.5]);?>Monolog suporta envio de logs para arquivos, bancos de dados, Slack, Telegram, Email, Syslog e muitos outros canais. A arquitetura flexível permite criar handlers personalizados.
2. Analog
Analog é uma biblioteca leve e rápida, focada na simplicidade. Ela não requer instalação de dependências e é ideal para projetos pequenos.
<?phprequire_once 'Analog.php';
Analog::handler(Analog\\Handler\\File::init('/var/log/app.log'));Analog::log('Página carregada', Analog::INFO);?>Analog suporta os mesmos níveis de registro que PSR-3, mas possui sua própria API. Para integração com PSR-3, pode-se usar a ponte AnalogPSR3.
3. KLogger
KLogger é uma biblioteca minimalista que já foi popular. Atualmente seu desenvolvimento está parado, mas ainda é usada em projetos antigos. Exemplo:
<?php$log = new Katzgrau\\KLogger\\Logger('/var/log/');$log->info('Usuário entrou no sistema');?>Não é recomendada para novos projetos devido à falta de suporte a PSR-3 e atualizações.
4. Log4php
Log4php é uma adaptação do popular framework Java Log4j. Suporta configurações complexas via XML ou arrays PHP:
<?phprequire_once 'Logger.php';Logger::configure('config.xml');
$logger = Logger::getLogger('main');$logger->error('Erro crítico');?>Log4php tem uma curva de aprendizado íngreme, mas oferece recursos poderosos: filtragem, múltiplos appenders, macros.