Làm thế nào tôi có thể đăng nhập lỗi này vào một tệp văn bản hoặc cơ sở dữ liệu?PHP: Cách đăng nhập các lỗi nghiêm trọng?
Fatal error: Call to undefined method PROJECTS::ssss()
Làm thế nào tôi có thể đăng nhập lỗi này vào một tệp văn bản hoặc cơ sở dữ liệu?PHP: Cách đăng nhập các lỗi nghiêm trọng?
Fatal error: Call to undefined method PROJECTS::ssss()
Đó là không thể để xử lý các lỗi chết người sử dụng một lỗi xử lý tùy chỉnh.
Giải pháp tốt nhất chỉ đơn giản là cho phép ghi nhật ký lỗi (ví dụ: syslog) trong php.ini của bạn và sau đó sử dụng công cụ như logcheck/logsentry để nhận email thông thường về các mục nhật ký hệ thống khác thường.
Thay vì syslog PHP cũng có thể ghi lỗi vào một tệp - chỉ cần xem xét các tùy chọn ghi nhật ký lỗi của php.ini.
log_errors = On
error_log = syslog
error_log = /path/to/some/folder/phperrors.log
Rõ ràng bạn chỉ muốn sử dụng một trong số error_log
dòng.
Cái gì như:
if(!method_exists($obj, 'method')){
$db->log('What you want to log'); //log in your DB
error_log('message');//Write to php's error log
}
Tôi có một xử lý lỗi để xử lý lỗi của tôi nhưng một số lỗi như trên, tôi không thể xử lý họ hoặc đăng nhập. – Hamidreza
Ugh, tôi khá chắc chắn anh ấy muốn một giải pháp chung. – ThiefMaster
Tôi không biết lỗi này xảy ra ở đâu. tôi cần phải đăng nhập tất cả các loại lỗi – Hamidreza
Bạn có thể có tất cả
cơ sở của bạn
lớp thuộc về một siêu lớp sử dụng method overloading:
class Base
{
public function __call($name)
{
MyLog::logError(...);
trigger_error("Function ".get_class($this)."::$name doesn't exist",
E_USER_ERROR);
}
}
Nỗ lực để gọi các phương pháp không tồn tại các lớp học có nguồn gốc từ Base
sẽ được cuối cùng xử lý bởi Base::__call()
. Đối với các phương pháp tĩnh, tương ứng, có __callStatic()
(như của PHP 5.3).
Có cách để đối phó với nhiệm vụ của bạn và thực tế bạn CÓ THỂ đặt trình xử lý lỗi tùy chỉnh về lỗi FATAL.
Bạn có thể làm theo cách này:
ini_set('error_reporting', E_ERROR);
register_shutdown_function("fatal_handler");
function fatal_handler() {
$error = error_get_last();
//Do whatever you want with this error, for example:
YourDBApplicationLayer::writeFatal($error);
}
bây giờ nó thể trong PHP7
try {
ggggg(); // <---- make fatal error
}catch(Error $e){
var_dump($e);
}
làm thế nào tôi có thể cho phép đăng nhập lỗi trong php.ini? – Hamidreza
Bạn sẽ có thể xử lý một lỗi nghiêm trọng với register_shutdown_function() –
@ SebastiánGrignoli: Không có cách nào sạch sẽ để phát hiện nếu có lỗi trong hàm đó. – ThiefMaster