WordPress Extremo
- Como Criar um Plugin WordPress com Composer e PSR-4 – WordPress Extremo Dia 1
- Como Usar Serviços em Plugins para Código Limpo e Desacoplado – WordPress Extremo Dia 2
- Como Usar Repositórios em Plugins para Separar Lógica de Dados – WordPress Extremo Dia 3
- Injeção de Dependência Manual em Plugins WordPress – WordPress Extremo Dia 4
- Hooks Avançados no WordPress: apply_filters, do_action e boas práticas
- Criando Comandos WP-CLI Personalizados para Plugins WordPress
- Criando Blocos Personalizados com Gutenberg e React
- Estilizando Blocos Gutenberg com CSS e Classes Dinâmicas
- Cor, Alinhamento e Estilo Dinâmico com Gutenberg + React
- Ícones, Imagens e Classes Personalizadas no Gutenberg
- Componentes Reutilizáveis e Atributos Compostos em Blocos Gutenberg
- Conectando Blocos com a REST API do WordPress
- Bloco Dinâmico com Renderização no Servidor
- Filtrando Posts por Categoria no Editor do Bloco
- Bloco de Posts com Filtro por Múltiplas Categorias
- Como Gerenciar Logs e Erros Internos em Plugins WordPress (Do Jeito Certo)
Fala, pessoal! 👋
Aqui é o Asllan Maciel — e hoje vamos voltar ao tema Arquitetura e Engenharia de plugins e falar sobre algo essencial para qualquer plugin WordPress profissional: gerenciamento inteligente de erros e logs.
Precisamos avançar com a estruturação do nosso plugin, mas logo logo vamos voltar à criação de blocos em nível avançado!
Então… se você quer elevar o nível dos seus projetos, precisa abandonar o velho error_log()
espalhado no meio do código. Hoje vamos estruturar um sistema de logs real, digno de plugin de mercado.
🚀 Bora aprender do jeito certo?
🚀 Por que ter um sistema de logs no plugin?
✅ Facilita a identificação de bugs sem depender de ambientes ao vivo.
✅ Permite rastrear falhas específicas, como problemas de integração de API ou erros em transações.
✅ Profissionaliza seu plugin: quem lida bem com erros passa segurança.
✅ Melhora o suporte ao cliente, reduzindo o tempo de análise de problemas.
🎯 Exemplo real:
Sem log:
Usuário: “O pagamento não funcionou!”
Você: “🤔… vou tentar reproduzir aqui.”
Com log:
Você abre o log e vê:[2025-04-23 15:47:00] - Erro no pagamento: Código 403 - Permissão negada.
🔵 Resultado: Você soluciona rápido e transmite confiança!
🛠️ Estruturando o Gerenciador de Logs
Decidimos implementar uma classe de serviços — e não apenas um “Logger” — para manter o plugin modular, limpo e escalável.
Estrutura:
/src/Services/LogService.php
Código:
<?php
namespace WpArquiteturaExtrema\Services;
class LogService
{
protected $log_file;
public function __construct()
{
$upload_dir = wp_upload_dir();
$this->log_file = $upload_dir['basedir'] . '/wp-arquitetura-extrema.log';
}
public function info($message)
{
$this->write_log('INFO', $message);
}
public function warning($message)
{
$this->write_log('WARNING', $message);
}
public function error($message)
{
$this->write_log('ERROR', $message);
}
protected function write_log($level, $message)
{
$datetime = date('Y-m-d H:i:s');
$formatted = "[{$datetime}] {$level}: {$message}" . PHP_EOL;
file_put_contents($this->log_file, $formatted, FILE_APPEND);
}
}
🔌 Como Instanciamos o LogService?
Vamos garantir que o log esteja disponível em todo o plugin.
Pra isso, alteramos nosso Init
para carregar o serviço de log centralmente.
Atualização no Init
:
<?php
namespace WpArquiteturaExtrema\Hooks;
use WpArquiteturaExtrema\Services\HelloService;
use WpArquiteturaExtrema\Repositories\UserRepository;
use WpArquiteturaExtrema\Services\LogService;
class Init
{
protected $logger;
public function register()
{
$this->logger = new LogService();
add_action('init', [$this, 'init_plugin']);
add_action('init', [$this, 'register_blocks']);
}
public function init_plugin()
{
$repo = new UserRepository();
$service = new HelloService($repo);
$service->execute();
// Exemplo de uso do logger
$this->logger->info('Plugin inicializado com sucesso.');
}
public function register_blocks()
{
// Registro dos blocos conforme já estruturamos
}
}
Agora, qualquer serviço que precisar de logs poderá usar essa instância de forma controlada! 🔥
🧠 Boas práticas para usar o Log
- Não abuse: logue apenas eventos relevantes.
- Proteja: nunca deixe logs expostos publicamente em produção.
- Rotacione: dependendo do volume, implemente rotação (arquivar logs antigos).
- Padronize mensagens: sempre claras e objetivas.
📌 Recapitulando
Hoje estruturamos:
✅ Um sistema de logs inteligente com níveis de informação (info, warning, error).
✅ Uma maneira centralizada de instanciar e usar o Logger.
✅ A integração limpa com nossa arquitetura já existente.
Se você quer seguir elevando o nível, fique ligado nos próximos dias! 🚀