/** * スクリプトシャットダウン時のログ処理 * * <pre> * アプリケーションログ、smartyアサインログ、グローバル変数ログ、 * リクエストURIをシリアライズしてファイル保存します。 * デバックモードの時のみ使用します。 * 保存されたログは/__bear/のLogタブでブラウズできます。 * シャットダウン時実行のメソッドとしてフレームワーク内で登録され、 * スクリプト終了時に実行されます。 * フレームワーク内で使用されます。 * </pre> * * @return void * @ignore * @throws BEAR_Log_Exception */ public function shutdownDebug($return = true) { if (PHP_SAPI === 'cli') { return; } if (strpos($_SERVER['REQUEST_URI'], '__bear/') !== false) { return; } restore_error_handler(); error_reporting(0); try { $isBeardev = isset($_SERVER['__bear']); $pageLogPath = _BEAR_APP_HOME . '/logs/' . 'debug' . '.log'; file_put_contents($pageLogPath, $this->_config['debug']); if ($isBeardev || PHP_SAPI === 'cli') { return; } $log = array(); $pageLogPath = _BEAR_APP_HOME . '/logs/page.log'; if (file_exists($pageLogPath) && !is_writable($pageLogPath)) { // 書き込み権限のエラー Panda::error('Permission denied.', "[{$pageLogPath}] is not writable."); return; } // page ログ $pageLog = file_exists($pageLogPath) ? BEAR_Util::unserialize(file_get_contents($pageLogPath)) : ''; // show_vars if (!function_exists('show_vars')) { include 'BEAR/vendors/debuglib.php'; } $log['var'] = show_vars('trim_tabs:2;show_objects:1;max_y:100;avoid@:1; return:1'); if (class_exists('BEAR_Smarty', false)) { $smarty = BEAR::dependency('BEAR_Smarty'); unset($smarty->_tpl_vars['content_for_layout']); $log['smarty'] = $smarty->_tpl_vars; } else { $log['smarty'] = ''; } $oldPageLog = isset($pageLog['page']) ? $pageLog['page'] : array(); $newPageLog = array('page' => $this->_logs, 'uri' => $_SERVER['REQUEST_URI']); $oldPageLog[] = $newPageLog; if (count($oldPageLog) > 3) { array_shift($oldPageLog); } $log += array('page' => $oldPageLog, 'include' => get_included_files(), 'class' => get_declared_classes()); if (isset($_SERVER['REQUEST_URI'])) { $log += array('uri' => $_SERVER['REQUEST_URI']); } $reg = BEAR_Util::getObjectVarsRecursive(BEAR::getAll()); $log['reg'] = $reg; if ($return === true) { return $log; } else { file_put_contents($pageLogPath, serialize($log)); } } catch (Exception $e) { throw $e; } }