Como fazer o registo de erros no co-Designiter (PHP)

quero o registo de erros no código PHP. Como posso activar o registo de erros?

Tenho algumas perguntas.
  1. Quais são todos os passos para registar um erro?
  2. Como é criado um ficheiro de registo de erros?
  3. Como introduzir a mensagem de erro no ficheiro de Registo (sempre que ocorrer um erro)?
  4. Como é que se envia esse erro para um endereço de E-mail?
Author: Eric Leschinski, 2010-07-09

4 answers

O CodeIgniter tem algumas funções de registo de erros incorporadas.

  • Faça com que a sua /Aplicação/registos pasta possa ser escrita
  • em /application/config / config.conjunto de php
    $config['log_threshold'] = 1;
    ou usar um número maior, dependendo de quantos detalhes você quer em seus logs
  • utilizar log_message('error', 'Some variable did not contain a value.');
  • para enviar um e-mail, é necessário estender o método principal da classe CI_Exceptions log_exceptions(). Pode fazer isto sozinho ou usar isto . Mais informações sobre a extensão do núcleo Aqui.

Ver http://www.codeigniter.com/user_guide/general/errors.html

 135
Author: Keyo, 2016-06-24 10:28:06

Para simplesmente colocar uma linha no registo de erros do servidor, use a função error_ log() do PHP. No entanto, esse método não enviará um e-mail.

Primeiro, para despoletar um erro:

trigger_error("Error message here", E_USER_ERROR);

Por omissão, isto irá para o ficheiro de registo de erros do servidor. Veja a diretiva ([9]) de ErrorLog para Apache. Para definir o seu próprio ficheiro de Registo:

ini_set('error_log', 'path/to/log/file');

Note que o ficheiro de registo que escolher já deve existir e poder ser escrito pelo processo do servidor. A maneira mais simples de fazer o ficheiro writable é fazer o utilizador do servidor o dono do ficheiro. (O usuário do servidor pode ser ninguém, _www, apache, ou qualquer outra coisa, dependendo de sua distribuição de SO.)

Para enviar por e-mail o erro, você precisa configurar um manipulador de erros personalizado:

function mail_error($errno, $errstr, $errfile, $errline) {
  $message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
  error_log($message); // writes the error to the log file
  mail('[email protected]', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

Por favor veja a documentação de PHP relevante para mais informações.

 18
Author: Mark Eirich, 2010-07-09 05:22:55

Certifique-se também que permitiu ao codeigniter registar o tipo de mensagens que deseja num ficheiro de configuração.

I. e $config['log_threshold'] = [log_level ranges 0-4];

 2
Author: Gpak, 2016-01-30 13:43:14

Mais oin em relação à pergunta parte 4 Como é que se envia esse erro para um endereço de E-mail? A função error_ log também tem destino de E-mail. http://php.net/manual/en/function.error-log.php

Agha, aqui encontrei um exemplo que mostra uma utilização. enviar a mensagem de erros por e-mail usando o error_ log()

error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL);
 0
Author: Master James, 2017-05-23 11:33:17