No CodeIgniter, como mensagens de erro Posso ter PHP tiver falado para mim?
-
06-07-2019 - |
Pergunta
Eu gostaria de receber logs de erros via e-mail. Por exemplo, se uma mensagem de erro Warning-level
deve ocorrer, eu gostaria de receber um e-mail sobre isso.
Como posso obter que trabalhar em CodeIgniter?
Solução
Você poderia estender a classe núcleo Exceção para fazê-lo.
Pode ajustar a referência à classe de e-mail do CI, não tenho certeza se você pode instanciá-lo a partir de uma biblioteca como esta. Eu não usar a classe de e-mail da CI-me, eu tenho usado a biblioteca Swift Mailer. Mas isso deve levá-lo no caminho certo.
Faça um arquivo MY_Exceptions.php e colocá-lo em / application / libraries / (Ou in / application / core / para CI 2)
class MY_Exceptions extends CI_Exceptions {
function __construct()
{
parent::__construct();
}
function log_exception($severity, $message, $filepath, $line)
{
if (ENVIRONMENT === 'production') {
$ci =& get_instance();
$ci->load->library('email');
$ci->email->from('your@example.com', 'Your Name');
$ci->email->to('someone@example.com');
$ci->email->cc('another@another-example.com');
$ci->email->bcc('them@their-example.com');
$ci->email->subject('error');
$ci->email->message('Severity: '.$severity.' --> '.$message. ' '.$filepath.' '.$line);
$ci->email->send();
}
parent::log_exception($severity, $message, $filepath, $line);
}
}
Outras dicas
Uma coisa que é deixado de fora da solução é que você tem que CodeIgniters garra super-objeto para carregar e usar a biblioteca de e-mail (ou qualquer de CodeIgniters outras bibliotecas e funções nativas).
$CI =& get_instance();
Depois de ter feito isso você usa $CI
vez de $this
para carregar a biblioteca de e-mail e configurar todos os parâmetros. Para mais informações clique aqui e olhar sob o Utilizando CodeIgniter recursos dentro de sua biblioteca .
Oh, outra opção é obter uma aplicação logrotation que suporta e-mail digere. Não tenho certeza em qual plataforma você está, mas você poderia apenas ter algo do monitor do arquivo error_log e enviar atualizações, pode não ser tão limpo e certamente você estaria limitado a apenas informações no error_log. (Error_log é Apache, CI tem um / logs / pasta no sistema, e IIS tem de Eventos do Windows)
Estou prestes a lançar um projeto open source que faz isso e muito mais. Ele coleta erros, envia-los para um issue tracker, detecta duplicados, transforma-os em questões e e-mails do pessoal.
Os detalhes estão em https://sourceforge.net/news/?group_id=317819&id=293422 ea versão 0.1.7 menciona é devido para fora em um par de dias.
A fonte rastreador aberta é em http://elastik.sourceforge.net/
Qualquer comentário bem-vindos, Graças