Пример #1
0
 /**
  * スクリプトシャットダウン時のログ処理
  *
  * <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;
     }
 }