我刚刚手工制作了一个复杂的订单流程,很快就会上线。第一次,我想知道发生的任何错误,但我也希望它们被记录下来。这个答案建议首先记录它们,然后邮寄它们以更安全,因为邮寄可能会失败。但是当我捕捉到异常时,它没有被记录,当我没有捕捉到它时,我无法发送电子邮件。
我的代码:
// convert errors to exceptions
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
try {
// ... some code that might cause errors or throw exceptions
} catch(Exception $e) {
log(...); // how can i make the error being logged here?
mail(...); // afterwards i send an email
throw $e; // i could re-throw it this way, but only after mailing it, cause it kills the process.
}
当然,我可以编写我的一个日志记录例程,但我猜 PHP 已经以一种我想使用的聪明方式来完成它。
另一件很棒的事情是进行一些控制,以确保每小时发送不超过 x 封错误电子邮件。
总而言之,这似乎是一个非常常见的设置,但我找不到现成的解决方案。或者这个想法在某种程度上是愚蠢的?