getMessage()) . ' in ' . CommUtil::str2UTF8($exception->getFile()) . ":" . $exception->getLine(); CLog::err($msg . PHP_EOL . DebugHelper::get_call_stack(), 'Exception Handler:'); CLog::flush(); # 最后再将快速日志刷到文件,因为后续逻辑执行就中断了 } /** * 依据全局变量决定是否开启错误handler并设置Err捕获级别 */ static function AutoHookShutdownExceptionHandler() { if (defined('DEBUGING') && DEBUGING) { # 调试模式,启用所有的php错误报告 error_reporting(E_ALL); # E_ALL : 开启所有错误和警告 register_shutdown_function(array(__CLASS__, 'shutdown_function')); # 插入运行结束时处理代码 set_error_handler(array(__CLASS__, 'error_handler')); # 插入自定义错误处理代码 set_exception_handler(array(__CLASS__, 'appException')); # 插入自定义异常处理代码 } else { error_reporting(0); # 非调试模式关闭所有的错误报告 } } } // 越早启用捕获的错误信息也就越全面 ErrHandler::AutoHookShutdownExceptionHandler(); # 初始化框架错误捕获机制