prepare( 'INSERT INTO audit_log (usuario, acao, alvo, detalhe, ip) VALUES (:usuario, :acao, :alvo, :detalhe, :ip)' ); $stmt->execute([ 'usuario' => $usuario, 'acao' => $acao, 'alvo' => $alvo, 'detalhe' => $detalhe, 'ip' => $ip, ]); } catch (Throwable $e) { // Nunca deixa uma falha de log derrubar a ação principal. error_log('AuditLog falhou: ' . $e->getMessage()); } $logFile = Config::get('app.log_file'); if ($logFile) { $line = sprintf( "%s|%s|%s|%s|%s|%s\n", date('Y-m-d H:i:s'), $ip, $usuario, $acao, $alvo ?? '-', $detalhe ?? '-' ); @file_put_contents($logFile, $line, FILE_APPEND | LOCK_EX); } } }