Logging para PHP: melhores soluções e ferramentas
Logging é uma das tarefas principais no desenvolvimento de qualquer aplicação web em PHP. Sem um logging de qualidade, é impossível depurar o código de forma eficaz, rastrear erros em ambiente de produção e analisar o comportamento dos usuários. Neste artigo, veremos as melhores bibliotecas e ferramentas para logging em PHP, suas características e exemplos de uso.
Por que é importante fazer logging corretamente?
Uma simples chamada error_log() ou gravação em arquivo via file_put_contents() deixa de ser suficiente quando o projeto cresce. As soluções modernas oferecem:
- Suporte ao PSR-3 (padrão de interface de logging);
- Handlers flexíveis (arquivos, BD, syslog, email, Slack);
- Formatação de mensagens (JSON, plain text, HTML);
- Níveis de logging (debug, info, notice, warning, error, critical, alert, emergency);
- Possibilidade de filtragem e rotação de logs.
1. Monolog — padrão de facto
Monolog é a biblioteca de logging mais popular em PHP (mais de 300 milhões de downloads no Packagist). Ela é totalmente compatível com PSR-3 e suporta dezenas de handlers e formatadores.
Instalação
composer require monolog/monologExemplo de uso
<?phprequire 'vendor/autoload.php';
use Monolog\\Logger;use Monolog\\Handler\\StreamHandler;use Monolog\\Handler\\FirePHPHandler;
// Criando o logger$log = new Logger('my_app');$log->pushHandler(new StreamHandler(__DIR__.'/app.log', Logger::WARNING));$log->pushHandler(new FirePHPHandler());
// Registrando mensagens$log->warning('Atenção: limite de requisições excedido');$log->error('Erro de conexão com o BD', ['db' => 'mysql', 'time' => 1.5]);?>Principais recursos
- Handlers: StreamHandler, RotatingFileHandler, SyslogHandler, SwiftMailerHandler, SlackHandler e outros.
- Formatadores: LineFormatter, JsonFormatter, HtmlFormatter, LogstashFormatter.
- Processadores: adição de contexto (IP, URI, sessão) a cada mensagem.
- Suporte a grupos de loggers e canais.
Monolog é ideal para grandes projetos, frameworks (Symfony, Laravel o usam por padrão) e arquitetura de microsserviços.
2. KLogger — alternativa leve
KLogger é uma biblioteca simples, mas eficaz, para quem não precisa de centenas de handlers. Ela implementa PSR-3 e funciona "pronta para uso".
Instalação
composer require katzgrau/kloggerExemplo de uso
<?phprequire 'vendor/autoload.php';
use Katzgrau\\KLogger\\Logger;
$log = new Logger(__DIR__.'/logs');$log->info('Usuário registrado', ['user_id' => 42]);$log->debug('Depuração: requisição à API', ['url' => '/api/v1/data']);?>Características
- Rotação automática de logs por data;
- Número mínimo de dependências;
- Suporte a níveis de logging;
- API simples (apenas alguns métodos).
KLogger é adequado para projetos pequenos, scripts e aplicações onde a simplicidade é importante.
3. Analog — flexível e minimalista
Analog é uma biblioteca que permite alterar facilmente o método de logging sem modificar o código. Ela usa o conceito de "máquina" (machine), que determina onde e como escrever os logs.
Instalação
composer require analog/analogExemplo de uso
<?phprequire 'vendor/autoload.php';
use Analog\\Analog;use Analog\\Handler\\File;
// Configurando a gravação em arquivoAnalog::handler(File::init(__DIR__.'/app.log'));
// RegistrandoAnalog::warning('Requires update'); Também na biblioteca
Monitoramento de aplicações .NET com Prometheus e OpenTelemetry
tsx para TypeScript: guia completo com exemplos práticos
Validação de dados em Kotlin: bibliotecas e abordagens
Trabalho com imagens em Go (Golang): image, draw, imaging, resize