2008-11-04 32 views

Trả lời

16

Bạn có thể mở rộng lớp lõi ngoại lệ để làm điều đó.

Có thể phải điều chỉnh tham chiếu đến lớp email của CI, không chắc chắn bạn có thể khởi tạo nó từ thư viện như thế này hay không. Tôi không sử dụng lớp email của CI, tôi đã sử dụng thư viện Swift Mailer. Nhưng điều này sẽ giúp bạn đi đúng hướng.

Thực hiện một MY_Exceptions.php tập tin và đặt nó vào/application/thư viện/(Hoặc trong/application/core/cho 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('[email protected]', 'Your Name'); 
      $ci->email->to('[email protected]'); 
      $ci->email->cc('[email protected]'); 
      $ci->email->bcc('[email protected]'); 
      $ci->email->subject('error'); 
      $ci->email->message('Severity: '.$severity.' --> '.$message. ' '.$filepath.' '.$line); 
      $ci->email->send(); 
     } 


     parent::log_exception($severity, $message, $filepath, $line); 
    } 

} 
+0

Chỉnh sửa ở trên, cần phải đa dạng hóa Ngoại lệ. MY_Exceptions.php MY_Exceptions lớp kéo dài CI_Exceptions { \t My_Exceptions function() { \t \t \t parent :: CI_Exceptions(); \t} ... (sử dụng CI phiên bản 1.7.1) – Jay

+0

tôi đã cố gắng giống nhau nhưng email không gửi ... Tôi đã thử nghiệm nó bằng cách thay đổi '$ dữ liệu [ "query_root_menu"] = $ t' vào '$ dataA [" query_root_menu "] = $ t' Xin hãy giúp tôi, nó rất cần thiết cho tôi để tìm hiểu điều này –

0

Oh, một lựa chọn khác là để có được một ứng dụng logrotation rằng hỗ trợ gửi email thông báo. Bạn không chắc chắn bạn đang sử dụng nền tảng nào, nhưng bạn có thể chỉ cần theo dõi một số thông tin về tệp error_log và gửi cho bạn các cập nhật, có thể không gọn gàng và chắc chắn bạn sẽ bị giới hạn chỉ thông tin trong error_log. (error_log là Apache, CI có một/logs/folder trong hệ thống và IIS có các Sự kiện Windows)

3

Một điều còn lại trong giải pháp là bạn phải lấy đối tượng siêu CodeIgniters để tải và sử dụng email thư viện (hoặc bất kỳ thư viện nào khác của CodeIgniters và các hàm gốc).

$CI =& get_instance(); 

Sau khi bạn đã làm điều đó bạn sử dụng $CI thay vì $this để tải thư viện email và thiết lập tất cả các thông số. Để biết thêm thông tin click here và xem theo số Sử dụng các tài nguyên CodeIgniter trong Thư viện của bạn phần.

0

Tôi sắp phát hành một dự án nguồn mở thực hiện điều này và hơn thế nữa. Nó thu thập các lỗi, gửi chúng đến trình theo dõi vấn đề, phát hiện các bản sao, biến chúng thành các vấn đề và nhân viên email.

Chi tiết có tại https://sourceforge.net/news/?group_id=317819&id=293422 và phiên bản 0.1.7 đề cập đến sẽ hết hạn sau một vài ngày.

Các theo dõi nguồn mở là tại http://elastik.sourceforge.net/

Bất kỳ thông tin phản hồi hoan nghênh, Cảm ơn

Các vấn đề liên quan