Como Limpar Tabela de Log’s

Quando instalamos o Magento várias tabelas são criadas, entre elas, as tabelas de log de navegação.

Esse log é diferente do log do sistema, que discutimos aqui no blog em Verificar log do sistema. A diferença é que o log de navegação registra a passagem dos seus clientes e visitantes pelo site.

Sim. Desde o momento em que você coloca a loja no ar, todas as páginas visitadas são registradas no log com a informação do tipo de visitante, id do usuário logado, url visitada, data/hora do acesso, tipo de navegador e sistema operacional, ip, etc.

E qual o problema?

Como esse log de navegação é contínuo, problemas podem ocorrer quando você faz uma importação de produtos, atualização de dados nas tabelas, as vezes até mesmo um botão voltar (back) do navegador do cliente. Gerando assim um erro de integridade:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry…

Ou seja, o sistema tenta gravar um registro onde já existem dados.

Outro problema seria justamente no tamanho da sua base de dados que não para de crescer nunca. Pois todos os dias (desde o lançamento) todas as informações de navegação dos usuários são armazenadas.

Obviamente essas informações são importantes para investigar um problema ou uma tentativa de invasão, etc. Mas depois que você faz um backup dessas informações esse histórico pode ser apagado, reduzindo assim o volume de dados nas suas tabelas e o tamanho dos seus próximos backup’s.

Configurações avançadas de log

Para evitar esse tipo de problema e até mesmo uma sobrecarga de dados, é interessante que você habilite o agendamento de limpeza de log’s do sistema. Para isso acesse:

Sistema > Configuração > AVANÇADO > Sistema [Limpeza de Log]

Vejamos nossas opções de configuração:

Salvar Log, Dias – Indica a quantidade mínima de dias que a informação deve ficar armazenada nas tabelas. Qualquer informação acima desse período não precisa mais ser armazenada – provavelmente porque você já realizou um backup.

Habilitar Limpeza de Log – Por padrão vem marcado “Não“, altere para “Sim” caso deseje limpar as tabelas automaticamente.

Hora de Início – É possível informar hora, minuto e segundo. O importante aqui é informar um horário de baixo fluxo de visitantes, pois o processo consome recursos do servidor.

Dica! Procure acompanhar os primeiros processos para descobrir o tempo médio de duração – assim você consegue mensurar melhor o horário de agendamento.

Frequência – Com que frequência você vai realizar a limpeza. Isso pode coincidir com sua frequência de backup’s. Inicialmente você pode começar com backup’s mensais, e com o aumento de volume de dados, e a importância financeira deles, você aumenta a frequência para semanas ou dias.

Configurando a limpeza de log

Os 3 (três) últimos campos são referentes ao email de erro. Sempre que houver uma falha na limpeza agendada dos dados, um alerta será disparado para o email informado, usando o remetende e modelos informados no sistema.

Solução emergencial

Algumas vezes o erro pode impedir nosso acesso ao sistema. E nossa única alternativa é “atacar” o banco de dados. Então quando o sistema apresentar um problema com as tabelas de log que não pode ser resolvido pelo backend, devemos usar um SGBD para executar o script de limpeza:

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE `log_customer`;
TRUNCATE `log_quote`;
TRUNCATE `log_summary`;
TRUNCATE `log_url`;
TRUNCATE `log_url_info`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;
TRUNCATE `log_visitor_online`;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `log_summary` AUTO_INCREMENT=1;
ALTER TABLE `log_url` AUTO_INCREMENT=1;
ALTER TABLE `log_url_info` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_online` AUTO_INCREMENT=1;
SET FOREIGN_KEY_CHECKS=1;

Basicamente são todas as tabelas de log menos log_summary_type. Usamos o comando truncate para zerar os registros de log’s de navegação, eliminando assim o problema de chave duplicada.

O script funciona em todas as versões do Magento.

Qualquer dúvida ou problema basta acessar o fórum Bragento.

Sucesso!