我有错误课,我用这种方式:
set_error_handler("Error::catchError");
我需要发送到这个类和方法信息,在哪里放置日志文件,但我无法弄清楚,如果可以通过此调用发送一些参数。我不想要,我不能直接在方法catchError中定义文件的方式。
非常感谢所有人的想法。
这是我的错误类:
class Error{
/** Catch PHP error and choose what to do with it
* @param int error type
* @param string error message
* @param err_file string filename that the error was raised in
* @param err_line int line number the error was raised at
* @param err_context array every variable that existed in the scope the error was triggered in *
*/
public static function catchError($err_no, $err_str, $err_file, $err_line, $err_context){
$log_file = "C:/wamp/www/cms/error.log"; // THIS MUST BE OBTAINED BY PARAMETER
$date = date("[Y-m-d h:i:s]",time());
$client_ip = "[".$_SERVER['REMOTE_ADDR']."]";
$text = " Error n: $err_no: $err_str on line $err_line in $err_file\n";
file_put_contents($log_file, $date.$client_ip." ".$text, FILE_APPEND);
}
}
答案 0 :(得分:2)
使用匿名函数:
set_error_handler(function ($err_no, $err_str, $err_file, $err_line, $err_context) {
Error::catchError('error.log', $err_no, $err_str, $err_file, $err_line, $err_context);
});
或者重写你的Error
类,这样你就可以实例化它并将日志传递给构造函数(无论如何都是更好的方法):
$logger = new Error('error.log');
set_error_handler(array($logger, 'catchError'));