0
139

SHARE

Como Implementar um Sistema de Logs Profissional em Plugins WordPress

Como Gerenciar Logs e Erros Internos em Plugins WordPress (Do Jeito Certo)

Aprenda a criar um sistema de gerenciamento de erros e logs para plugins WordPress, elevando a qualidade e profissionalismo dos seus projetos
Este post é a parte 7 de 15 da Série WordPress Extremo: Arquitetura e Engenharia de Plugins

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! 🚀

Navegação<< Criando Comandos WP-CLI Personalizados para Plugins WordPressTratamento de Erros e Uso Inteligente de Exceptions em Plugins WordPress >>

Não perca mais nenhuma atualização aqui!

Ative as Notificações!

Clique aqui e, em seguida, clique em Permitir na caixa que aparecerá na parte superior da janela, próximo à barra de endereços.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! Ao se tornar um assinante do WP24Horas, você terá acesso a:

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!

Não perca mais nenhuma atualização aqui!

Tabela de Conteúdo
PUBLICIDADE
Últimos Posts
Listagem e Detalhes de Posts WordPress com API REST no Next.js

Listagem de Posts e Roteamento Dinâmico no Next.js

Frontend com Next.js - Setup e Integração Inicial com WordPress

Frontend com Next.js: Setup e Integração Inicial

Configurando o WordPress como Backend Headless

Configurando o WordPress como Backend Headless

REST API do WordPress

REST API do WordPress: Visão Geral

Introdução ao WordPress Headless

Introdução ao WordPress Headless

Como Distribuir Seus Blocos Gutenberg em Plugins ou no GitHub

Distribuindo Seus Blocos: Plugins, Repositório e GitHub

Você precisa estar logado para ver esta informação.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! 

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!