Gravando log de erros gerados em consultas SQL

Publicado por Andre Cardoso (última atualização em 01/10/2012)

[ Hits: 6.841 ]

Homepage: http://www.andrebian.com

Download grava_log.php

Download logger-pt.tar.gz (versão 2)




Este script tem por finalidade auxiliar a gravação de log de erros em background, impossibilitando que mensagens de erro apareçam no site, expondo a estrutura ou parte dela para pessoas mal intencionadas.

  



Versões atualizadas deste script

Versão 2 - Enviado por Andre Cardoso em 29/09/2012

Changelog: Refeito o log, só não criei um novo script porque trata-se da mesma coisa, porem melhorada

Para pegar a versão sempre atualizada realize o clone no github

https://github.com/andrebian/logger.git

Está em ingles pra aceitar contribuições de qualquer parte do mundo

Download logger-pt.tar.gz


Esconder código-fonte

Recomendo a deixar o parametro display_errors desabilitado no site, pois esta é uma funcionalidade interessante somente em modo de produção para depuração. No site o ideal é que se trabalhe com gravação de log como esse que eu posto aqui.


#####
Arquivo de funções do site ou mesmo arquivo onde deseja que seja utilizado (recomendo um arquivo de funções para que possa ser utilizado por qualquer arquivo necessário)

function grava_log_erros_banco($arquivo,$linha,$argumentos,$erro){
      /**
       * @desc Grava log de erros ocorridos em consultas SQL
       * @return Void
       * @param String $arquivo, $linha, $argumentos, $erro
       */

      // abrindo o arquivo para gravar colocando o ponteiro de escrita na ultima linha
      $abre_log = fopen('./util/erros_log', 'a');
      // setando a data atual
      $data = date('d/m/y H:i:s');
      // definindo a mensagem a ser gravada
      $mensagem = htmlspecialchars("$data - $arquivo - Linha: $linha - Argumentos: $argumentos - Erro: $erro \n");
      
      // escrevendo no arquivo de log
      @fwrite($abre_log,$mensagem);
      
      // fechando o arquivo de log
      @fclose($abre_log);
      
   }


####
Arquivo ou parte que chama a função

// pegando email da sessão
      $email = $_SESSION['usuario_logado'];
      $arquivo = __FILE__;
      
      // verificando se o usuario está logado
      $select = "select * from tb_clientes where email='$email'"; $linha = __LINE__;  // logo após montar a query atribui o numero da linha em uma variável
      $select = mysql_query($select);
      
      if(mysql_error()){
         
                        $arquivo = __FILE__;  // pegando o caminho completo e nome do arquivo
         $argumentos = "Coletando dados do usuário.";    // descrição do que estava sendo executado no momento do erro
         $erro = mysql_error();
         
                        // chamando a função
         grava_log_erros_banco($arquivo, $linha, $argumentos, $erro);
         
      }




#############################

Arquivo de log

27/05/12 13:16:24 - /var/www/desenvolvimento/lista-de-compras/site/layout/header.php - Linha: 19 - Argumentos: Coletando dados do usuário. - Erro: Table 'lista_de_compras.tb_clientes' doesn't exist 

##############################


ESPERO TER AJUDADO, pra mim esta função é essencial em qualquer projeto, não deixo uma consulta sem possibilidade de gravação de log.


Scripts recomendados

Segurança para sua página

GMail Bomber

Sistema de Login

Ofuscador de codigo php

Easy Login !!! OTIMO LOGIN !!!


  

Comentários
[1] Comentário enviado por andrebian em 01/09/2012 - 23:07h

Pessoal, tem um pequeno errinho que escrevi no começo onde explico a vantagem de ter gravação de log "Recomendo a deixar o parametro display_errors desabilitado no site, pois esta é uma funcionalidade interessante somente em modo de PRODUÇÃO para depuração."

Na verdade eu confundi. O display errors somente deve ficar ativo em ambiente de desenvolvimento e de testes, no ambiente de produção não deve mostrar erros.

[2] Comentário enviado por windpanda em 28/09/2012 - 15:28h

Brigado estava atraz de algo assim fiz aqui e ficou show vlw

[3] Comentário enviado por andrebian em 29/09/2012 - 01:41h

Tem uma versão novinha em folha de gerador de logs. Disponibilizei no github pra quem quiser. Se alguem tiver interesse em melhorar eu autorizo os commits

https://github.com/andrebian/logger


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts