Gravando log de erros gerados em consultas SQL

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

[ Hits: 6.805 ]

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

Protegendo páginas

Login em PHP 3

Encrypt / Decrypt string

Função Anti MySQL Injection - Proteja sua aplicação!

Geração de senhas e URL de vídeos Youtube e Vimeo


  

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