SyLでは、カレントのerror_reportingの値とログレベルの値により、エラーの表示や処理内容(ログの出力など)が変化しますので、 ここではその形式をまとめています。
※SyLフレームワーク側でも、display_errorsの設定が反映されます。display_errorsがoffの場合はエラー画面が表示されません。
error_reportingの値はフレームワーク起動ファイルで設定します。また、ログレベルの設定は設定ファイル(defines.xml)で設定します。 下記に一例を示します。
// 例) 起動ファイル <?php error_reporting(E_ALL); // error_reporting値 require_once '../../SyL.php'; $config = array( 'type' => '', 'project_dir' => SYL_DIR . '/example/start-templates/webapp', 'app_name' => 'start', 'action_key' => 'action', 'cache' => 'file' ); $controller =& SyL_Controller::getController($config); $controller->stream(); ?> // 例) 設定ファイル ... <define name="SYL_LOG">{SYL_LOG_WARN}</define> // ログレベル <define name="SYL_LOG_FILE">{SYL_PROJECT_DIR}/var/logs/SyL_YYYYMMDD.log
</define> ...
error_reportingの値については、PHPの公式ドキュメントを参照してください。
ログレベルは、デバック情報やエラー情報をログファイルに出力したり、エラーメールの送信するときの判定条件に使用します。
SyLフレームワークでは、フレームワークの初期ファイル(SyL.php)で下記のような定数が定義されています。
SYL_LOG_NONE | エラー、デバックログ共に出力しません。 |
---|---|
SYL_LOG_ERROR | E_USER_ERRORレベルとE_ERRORレベルエラーが発生した場合にログに記録します。 またSYL_LOG_WARN以下のデバックログの出力をログに記録します。 |
SYL_LOG_WARN | E_USER_WARNING、E_USER_ERRORの各レベルと(エラーハンドリング可能な)E_WARNINGレベル以下のエラーが発生した場合にログに記録します。 またSYL_LOG_WARN以下のデバックログの出力をログに記録します。 |
SYL_LOG_NOTICE | E_USER_NOTICE、E_USER_WARNING、E_USER_ERRORの各レベルと(エラーハンドリング可能な)E_NOTICEレベル以下のエラーが発生した場合にログに記録します。 またSYL_LOG_NOTICE以下のデバックログの出力をログに記録します。 |
SYL_LOG_INFO | E_USER_NOTICE、E_USER_WARNING、E_USER_ERRORの各レベルと(エラーハンドリング可能な)E_NOTICEレベル以下のエラーが発生した場合にログに記録します。 またSYL_LOG_INFO以下のデバックログの出力をログに記録します。 |
SYL_LOG_DEBUG | E_USER_NOTICE、E_USER_WARNING、E_USER_ERRORの各レベルと(エラーハンドリング可能な)E_NOTICEレベル以下のエラーが発生した場合にログに記録します。 またSYL_LOG_DEBUG以下のデバックログの出力をログに記録します。 |
エラー時の表示と処理の関係を使用頻度の高いerror_reportingの値3つとの関係を示します。
表に項目名の意味は、下記のようになります。
エラー発生レベル | PHPエラーレベルを指します。ここでは、現実的に発生する可能性のあるエラーレベルのみ記述しています。 ※E_STRICTはPHP5以上です。 |
---|---|
エラー表示内容 | 表示されるエラー内容は、SyLフレームワークが提供するエラー(SyL)か、またはPHPのデフォルトエラー(PHP)かを示します。 ※SyLの場合、エラー表示内容は設定ファイル(defines.xml)の設定値「SYL_ERROR」が優先されます。 ※display_errorsがOffの場合は表示されません。 |
SyLログ記録 | エラー発生時、エラー内容がSyLフレームワークのロギング機構でロギングされるかを示します。 ※ロギングするには、設定ファイル(defines.xml)の「SYL_LOG」「SYL_LOG_FILE」を適切に設定してください。 |
PHPシステムログ記録 | アプリケーション側で、キャッチできないレベルのエラーを、PHPの設定を使用してログに保存します。 ※この設定は、「SyL.php」内で定義していますので、システムエラーを保存する場合は、こちらを確認してください。 |
+ error_reportingの値が E_ALL の場合
エラー発生レベル | エラー表示 内容 |
SyLログ記録 | PHPシステムログ記録 |
---|---|---|---|
E_ERROR | PHP | × | ○ [Fatal error] |
E_WARNING | SyL | △ (ログレベルSYL_LOG_WARN 以上で、エラーハンドリングされた場合) |
△ [Warning] (エラーハンドリングされなかった場合) |
E_PARSE | PHP | × | ○ [Parse error] |
E_NOTICE | SyL | △ (ログレベルSYL_LOG_NOTICE 以上で、エラーハンドリングされた場合) |
△ [Notice] (エラーハンドリングされなかった場合) |
E_USER_ERROR | SyL | △ (ログレベルSYL_LOG_ERROR 以上で、エラーハンドリングされた場合) |
△ [Fatal error] (エラーハンドリングされなかった場合) |
E_USER_WARNING | SyL | △ (ログレベルSYL_LOG_WARN 以上で、エラーハンドリングされた場合) |
△ [Warning] (エラーハンドリングされなかった場合) |
E_USER_NOTICE | SyL | △ (ログレベルSYL_LOG_NOTICE 以上で、エラーハンドリングされた場合) |
△ [Notice] (エラーハンドリングされなかった場合) |
E_STRICT | × | × | × |
+ error_reportingの値が E_ALL & ~E_NOTICE の場合
エラー発生レベル | エラー表示 内容 |
SyLログ記録 | PHPシステムログ記録 |
---|---|---|---|
E_ERROR | PHP | × | ○ [Fatal error] |
E_WARNING | SyL | △ (ログレベルSYL_LOG_WARN 以上で、エラーハンドリングされた場合) |
△ [Warning] (エラーハンドリングされなかった場合) |
E_PARSE | PHP | × | ○ [Parse error] |
E_NOTICE | × | △ (ログレベルSYL_LOG_INFO 以上で、エラーハンドリングされた場合) |
△ [Notice] (エラーハンドリングされなかった場合) |
E_USER_ERROR | SyL | △ (ログレベルSYL_LOG_ERROR 以上で、エラーハンドリングされた場合) |
△ [Fatal error] (エラーハンドリングされなかった場合) |
E_USER_WARNING | SyL | △ (ログレベルSYL_LOG_WARN 以上で、エラーハンドリングされた場合) |
△ [Warning] (エラーハンドリングされなかった場合) |
E_USER_NOTICE | SyL | △ (ログレベルSYL_LOG_NOTICE 以上で、エラーハンドリングされた場合) |
△ [Notice] (エラーハンドリングされなかった場合) |
E_STRICT | × | × | × |
+ error_reportingの値が 0 (OFF) の場合
エラー発生レベル | エラー表示 内容 |
SyLログ記録 | PHPシステムログ記録 |
---|---|---|---|
E_ERROR | PHP | × | ○ [Fatal error] |
E_WARNING | × | △ (ログレベルSYL_LOG_INFO 以上で、エラーハンドリングされた場合) |
△ [Warning] (エラーハンドリングされなかった場合) |
E_PARSE | PHP | × | ○ [Parse error] |
E_NOTICE | × | △ (ログレベルSYL_LOG_INFO 以上で、エラーハンドリングされた場合) |
△ [Notice] (エラーハンドリングされなかった場合) |
E_USER_ERROR | × | △ (ログレベルSYL_LOG_INFO 以上で、エラーハンドリングされた場合) |
△ [Fatal error] (エラーハンドリングされなかった場合) |
E_USER_WARNING | × | △ (ログレベルSYL_LOG_INFO 以上で、エラーハンドリングされた場合) |
△ [Warning] (エラーハンドリングされなかった場合) |
E_USER_NOTICE | × | △ (ログレベルSYL_LOG_INFO 以上で、エラーハンドリングされた場合) |
△ [Notice] (エラーハンドリングされなかった場合) |
E_STRICT | × | × | × |
SyLフレームワークでは、エラーが発生した場合、エラーメールを管理者に送る機能が実装されています。ただし、エラーメールを送信するにはいくつかの条件があります。
・設定ファイル(defines.xml)の設定値「SYL_ERROR_MAIL」が有効「1」である
・設定ファイル(defines.xml)の設定値「SYL_MAIL_ADMIN_ADDRESS」に管理者メールアドレスが設定されている
・設定ファイル(defines.xml)の設定値「SYL_MAIL_TYPE」が設定されていて、正常にメール送信ができる
・発生したエラーレベルが、ログレベル以下である
これらの条件を満たした場合のみ、エラーメールが送信されます。