1

我刚刚手工制作了一个复杂的订单流程,很快就会上线。第一次,我想知道发生的任何错误,但我也希望它们被记录下来。这个答案建议首先记录它们,然后邮寄它们以更安全,因为邮寄可能会失败。但是当我捕捉到异常时,它没有被记录,当我没有捕捉到它时,我无法发送电子邮件。

我的代码:

// 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 封错误电子邮件。

总而言之,这似乎是一个非常常见的设置,但我找不到现成的解决方案。或者这个想法在某种程度上是愚蠢的?

4

1 回答 1

1

函数error_log () 将自动将您的消息记录到 Web 服务器的 error_log 文件中。如果您愿意,可以指定自定义日志文件与默认的 error_log 文件。

因此,您可以像这样记录一个简单的错误消息error_log

error_log("This is my error message");

或在以下位置记录异常消息/var/log/web_error_log

} catch (Exception $e) {
    error_log($e->getMessage(), 3, '/var/log/web_error_log');
}

有关. _ _error_log

于 2013-05-09T16:01:18.447 回答