phpカスタムエラーログ
プロジェクトは、定義されたエラーログをタイムリーに処理する必要があるため、カスタムエラーログの出力方法(ログの書き込み、電子メールの送信、テキストメッセージの送信)を変更する必要があります
1. register_shutdown_function(array( 'phperror','shutdown_function')); //PHP プログラムの実行後に実行される関数を定義します。プログラムの実行が完了した後、後続の操作を実行します。プログラムの実行中に実行タイムアウトまたは強制シャットダウンが発生する可能性がありますが、この場合のデフォルトのプロンプトは非常に不親切です。 register_shutdown_function() 関数を使用して例外をキャッチすると、よりわかりやすいエラー表示方法を提供できます。同時に、実行完了後の一時ファイルなどの一時データのクリーニングなど、一部の機能のフォローアップ操作も実装できます。
呼び出し条件は次のように理解できます:
1. ユーザーによってページが強制停止されたとき
2. プログラムコードが時間切れになったとき
3. PHP コードの実行が完了したとき, コード実行時に例外、エラー、警告が発生します
2. set_error_handler(array('phperror','error_handler')) //ユーザー定義のエラー処理関数を設定します
ユーザー定義のエラー処理関数を設定します。 set_error_handler() 関数を使用してエラー ハンドラーを作成し、(trigger_error () を使用して) エラーをトリガーします。例外スローのデータ形式。
class phperror{ //自定义错误输出方法 public static function error_handler($errno, $errstr, $errfile, $errline){ $errtype = self::parse_errortype($errno); $ip = $_SERVER['REMOTE_ADDR'];//这里简单的获取客户端IP //错误提示格式自定义 $msg = date('Y-m-d H:i:s')." [$ip] [$errno] [-] [$errtype] [application] {$errstr} in {$errfile}:{$errline}"; //自定义日志文件的路径 $logPath = 'logs/app.log'; //写操作,注意文件大小等控制 file_put_contents($logPath, $msg, FILE_APPEND); } //系统运行中的错误输出方法 public static function shutdown_function(){ $lasterror = error_get_last();//shutdown只能抓到最后的错误,trace无法获取 $errtype = self::parse_errortype($lasterror['type']); $ip = $_SERVER['REMOTE_ADDR'];//这里简单的获取客户端IP //错误提示格式自定义 $msg = date('Y-m-d H:i:s')." [$ip] [{$lasterror['type']}] [-] [$errtype] [application] {$lasterror['message']} in {$file}:{$lasterror['line']}"; //自定义日志文件的路径 $logPath = 'logs/app.log'; //写操作,注意文件大小等控制 file_put_contents($logPath, $msg,FILE_APPEND); } //自定义异常输出 public static function appException($exception) { echo " exception: " , $exception->getMessage(), "/n"; } private static function parse_errortype($type){ switch($type){ case E_ERROR: // 1 return 'Fatal Error'; case E_WARNING: // 2 return 'Warning'; case E_PARSE: // 4 return 'Parse error'; case E_NOTICE: // 8 return 'Notice'; case E_CORE_ERROR: // 16 return 'Core error'; case E_CORE_WARNING: // 32 return 'Core warning'; case E_COMPILE_ERROR: // 64 return 'Compile error'; case E_COMPILE_WARNING: // 128 return 'Compile warning'; case E_USER_ERROR: // 256 return 'User error'; case E_USER_WARNING: // 512 return 'User warning'; case E_USER_NOTICE: // 1024 return 'User notice'; case E_STRICT: // 2048 // return 'Strict Notice'; case E_RECOVERABLE_ERROR: // 4096 return 'Recoverable Error'; case E_DEPRECATED: // 8192 return 'Deprecated'; case E_USER_DEPRECATED: // 16384 return 'User deprecated'; } return $type; } }