Tôi muốn đăng nhập mọi lỗi nghiêm trọng, thậm chí hết thời gian chờ và những lỗi khác E_ERRORS. Tôi sử dụng hàm set_error_handler và shutdown, nhưng với cái cuối cùng tôi không thể có stacktrace. Có cách nào để có nó?PHP: nhật ký ngăn xếp dấu vết cho lỗi FATAL trong sản xuất
Tôi muốn ghi nhật ký lỗi trên máy chủ sản xuất để giúp giải quyết các lỗi xảy ra chỉ trong quá trình sản xuất. Tôi biết, xdebug trên máy chủ dev phải là đủ, nhưng nó không phải là. Có lẽ chúng ta có thể sử dụng xdebug với tối thiểu các tùy chọn được kích hoạt, hoặc một phiên bản đã tước của nó để thêm dấu vết ngăn xếp vào nhật ký lỗi?
Thông tin lỗi in mã này nếu xảy ra một lỗi, thậm chí là hết thời gian chờ.
<?php
function shutdown()
{
$a=error_get_last();
if($a!==null) print_r($a);
}
register_shutdown_function('shutdown');
Lưu ý rằng tôi đã ném trong ** E_USER_ERROR ** trong '' fatals' mảng, nhưng nó thực sự có thể được xử lý thành công bởi một trình xử lý lỗi tùy chỉnh. – rdlowrey
Ok, tôi đã nghĩ đến một mô-đun PHP mà chỉ cần bắt stacktrace cho các lỗi nghiêm trọng, như xdebug nhưng nhẹ hơn. Nhiệm vụ của tôi là làm thế nào để có thêm thông tin về các lỗi nghiêm trọng trong sản xuất để giúp sửa chúng. –
@ CédricGirard Ah tôi hiểu rồi.Tôi nghĩ rằng phần lớn các lỗi nghiêm trọng là loại có thể được loại bỏ trong giai đoạn phát triển ... phần còn lại là những điều kiện bất thường (như hết bộ nhớ, đập máy chủ của bạn với một cái cudgel ở giữa yêu cầu, vv). Trong những trường hợp này, tôi luôn tìm thấy phương pháp trên cung cấp đầy đủ thông tin để đăng nhập. Tôi đã không thử nghiệm để xem nếu nó hoạt động với các lỗi FATAL (tôi nghĩ rằng nó nên), nhưng bạn có thể thử thêm một cuộc gọi đến ['debug_print_backtrace'] (http://www.php.net/manual/en/function. debug-print-backtrace.php) bên trong trình xử lý tắt của bạn để tìm thông tin theo dõi – rdlowrey