Pular para conteúdo

Auditoria e Logs (Logs)

O módulo de Auditoria do Core é um sistema de registro imutável projetado para garantir compliance, segurança e rastreabilidade total das operações realizadas na plataforma.

Enquanto os logs padrão do Moodle focam em "acessos" (quem viu a página X), os logs do MIDDAG focam em alterações de estado (quem mudou a nota de 5 para 10, quem alterou a data de matrícula).


Diferenciais do Sistema

1. Rastreamento de Mudanças (Diffing)

A maioria dos sistemas apenas registra "O usuário X editou o Curso Y". O MIDDAG registra:

"O usuário X editou o Curso Y. O campo Data de Início mudou de 01/01/2023 para 05/01/2023."

Isso é possível graças à arquitetura de Snapshots: antes de salvar qualquer alteração, o sistema compara a versão antiga do objeto com a nova e armazena apenas a diferença (Delta).

2. Contexto Rico

Cada registro de log armazena metadados contextuais para responder às perguntas: * Quem? (User ID, IP real, Sessão). * Onde? (Contexto do Moodle, URL, Curso). * Como? (Via Interface Web, via API, via Cron/Tarefa agendada, ou via Linha de Comando). * Por quê? (Mensagem de negócio associada à ação).

3. Imutabilidade

Os logs de auditoria são projetados para serem apenas leitura (Append-Only). Nem mesmo administradores podem excluir ou alterar um registro de log através da interface, garantindo que o histórico seja prova fiel das atividades.


O Que é Auditado?

O Core audita automaticamente ações críticas de todas as extensões ativas. Exemplos comuns incluem:

  • Gestão de Usuários: Mudanças manuais de perfil, trocas de senha administrativa.
  • Matrículas: Inscrições manuais, remoções, alterações de datas de vigência.
  • Notas e Conclusão: Alterações manuais em notas, redefinição de progresso (via extensão Cleaner).
  • Configurações: Mudanças nas configurações do plugin (ativar/desativar extensões).
  • Integrações: Falhas de comunicação com APIs externas ou Webhooks.

Visualizando os Logs

Para acessar o relatório de auditoria:

  1. Acesse Administração do Site > Plugins > Plugins Locais > MIDDAG.
  2. Clique na aba Logs e Auditoria.

Filtros Disponíveis

O painel permite filtrar o histórico por: * Nível: Erro, Aviso, Informação, Sucesso. * Componente: Filtrar apenas logs de uma extensão específica (ex: filtrar só Ecommerce). * Usuário: Ver tudo que uma pessoa específica fez. * Item: Ver todo o histórico de um objeto específico (ex: "Histórico do Pedido #1234").


Níveis de Severidade

O sistema classifica os eventos para facilitar a triagem:

Nível Cor Significado
Emergency / Critical 🔴 Vermelho Falha grave de sistema (banco corrompido, serviço fora do ar). Exige ação imediata da TI.
Error 🟠 Laranja Uma operação falhou (ex: erro no pagamento, falha no envio de e-mail).
Warning 🟡 Amarelo Operação completada, mas com ressalvas (ex: matrícula feita, mas e-mail não enviado).
Info 🔵 Azul Registro de atividade normal (ex: "Curso criado", "Aluno matriculado").
Debug ⚪ Cinza Informação técnica detalhada (visível apenas se o modo Debug estiver ativo).

Para Desenvolvedores

Se você está criando uma extensão, pode utilizar o serviço de logs para registrar ações de negócio.

Como registrar um log

Não use a tabela mdl_logstore padrão. Injete o audit_manager:

use local_middag\core\audit\audit_manager;

// Registrando uma ação simples
audit_manager::info(
    component: 'aluno_transferido',
    message: 'Aluno movido da Turma A para Turma B',
    context: ['aluno_id' => 10, 'motivo' => 'Solicitação da secretaria']
);

// Registrando um erro
audit_manager::error(
    component: 'integracao_falhou',
    message: 'API externa retornou 500',
    exception: $e // O sistema serializa o stack trace automaticamente
);

O audit_manager cuida automaticamente de capturar o usuário atual, o IP e o contexto da página.