Ignore:
Timestamp:
2012/03/04 04:20:00 (14 years ago)
Author:
Seasoft
Message:

#1633 (エラーハンドリングの改善)
#1676 (ログファイルを分離する)
#1677 (デバッグログの出力設定と画面へのエラー出力設定とを分離する)
#1678 (SQL の実行ログを提供する)
#1613 (typo修正・ソース整形・ソースコメントの改善)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/helper/SC_Helper_HandleError.php

    r21527 r21582  
    2525 * エラーハンドリングのクラス 
    2626 * 
    27  * @package Page 
     27 * 依存するクラスに構文エラーがあると、捕捉できない。よって、依存は最小に留めること。 
     28 * 現状 GC_Utils_Ex(GC_Utils) に依存しているため、その中で構文エラーは捕捉できない。 
     29 * @package Helper 
    2830 * @version $Id$ 
    2931 */ 
     
    8789        } 
    8890 
     91        $error_type_name = GC_Utils_Ex::getErrorTypeName($errno); 
     92 
    8993        $now = date('Y/m/d H:i:s'); 
    9094        // 本来 realpath() で正規化したいところだが、NULL を返すケースがあるため避けている (#1618) 
     
    9296        switch ($errno) { 
    9397            case E_USER_ERROR: 
    94                 $message = $now . " [$errfile:$errline] FATAL Error($errno) $errstr from ". $_SERVER['REMOTE_ADDR'] . "\n"; 
    95                 error_log($message, 3, $log_file_path); 
    96  
    97                 self::displaySystemError($errstr); 
     98                $message = "Fatal error($error_type_name): $errstr on [$errfile($errline)]"; 
     99                GC_Utils_Ex::gfPrintLog($message, ERROR_LOG_REALFILE, true); 
     100 
     101                SC_Helper_HandleError_Ex::displaySystemError($message); 
    98102                exit(1); 
    99103                break; 
     
    103107            case E_CORE_WARNING: 
    104108            case E_COMPILE_WARNING: 
    105                 $message = $now . " [$errfile:$errline] WARNING($errno) $errstr from ". $_SERVER['REMOTE_ADDR'] . "\n"; 
    106                 error_log($message, 3, $log_file_path); 
     109                $message = "Warning($error_type_name): $errstr on [$errfile($errline)]"; 
     110                GC_Utils_Ex::gfPrintLog($message, ERROR_LOG_REALFILE); 
    107111                return true; 
    108112 
     
    126130     */ 
    127131    static function &_fatal_error_handler(&$buffer) { 
    128         if (preg_match('/<b>(Fatal) error<\/b>: +(.+) in <b>(.+)<\/b> on line <b>(\d+)<\/b><br \/>/i', $buffer, $matches)) { 
     132        if (preg_match('/<b>(Fatal error)<\/b>: +(.+) in <b>(.+)<\/b> on line <b>(\d+)<\/b><br \/>/i', $buffer, $matches)) { 
    129133            $now = date('Y/m/d H:i:s'); 
    130             // 本来 realpath() で正規化したいところだが、NULL を返すケースがあるため避けている (#1618) 
     134            // realpath() で正規化したいが、NULL を返すケースがあるため避けている (#1618) 
    131135            $log_file_path = DATA_REALDIR . 'logs/site.log'; 
    132             $message = $now . " [$matches[3]:$matches[4]] FATAL Error: $matches[2] from ". $_SERVER['REMOTE_ADDR'] . "\n"; 
    133             error_log($message, 3, $log_file_path); 
     136            $message = "$matches[1]: $matches[2] on [$matches[3]($matches[4])]"; 
     137            GC_Utils_Ex::gfPrintLog($message, ERROR_LOG_REALFILE, true); 
    134138            if (DEBUG_MODE !== true) { 
    135139                $url = HTTP_URL . 'error.php'; 
    136                 if (defined('ADMIN_FUNCTION') && ADMIN_FUNCTION) { 
     140                if (defined('ADMIN_FUNCTION') && ADMIN_FUNCTION === true) { 
    137141                    $url .= '?admin'; 
    138142                } 
     
    174178        } 
    175179 
    176         $errstr = "[{$arrError[file]}:{$arrError[line]}] FATAL Error({$arrError[type]}) {$arrError[message]}"; 
    177  
    178         // ログの書き出し 
    179         $now = date('Y/m/d H:i:s'); 
     180        $error_type_name = GC_Utils_Ex::getErrorTypeName($arrError['type']); 
     181        $errstr = "Fatal error($error_type_name): {$arrError[message]} on [{$arrError[file]}({$arrError[line]})]"; 
     182 
    180183        // 本来 realpath() で正規化したいところだが、NULL を返すケースがあるため避けている (#1618) 
    181184        $log_file_path = DATA_REALDIR . 'logs/site.log'; 
    182         error_log($now . " $errstr from ". $_SERVER['REMOTE_ADDR'] . "\n", 3, $log_file_path); 
     185        GC_Utils_Ex::gfPrintLog($errstr, ERROR_LOG_REALFILE, true); 
    183186 
    184187        // エラー画面を表示する 
    185         self::displaySystemError($errstr); 
     188        SC_Helper_HandleError_Ex::displaySystemError($errstr); 
    186189    } 
    187190 
     
    215218        $objPage->init(); 
    216219        if (isset($errstr)) { 
    217             $objPage->arrDebugMsg[] 
    218                 = "▼▼▼ エラーメッセージ ▼▼▼\n" 
    219                 . $errstr . "\n" 
    220                 . "▲▲▲ エラーメッセージ ▲▲▲\n" 
    221             ; 
     220            $objPage->addDebugMsg($errstr); 
    222221        } 
    223222        $objPage->process(); 
Note: See TracChangeset for help on using the changeset viewer.