ドキュメント
リリースカレンダー
リンク
SourceForge.jp SourceForge.JPへ
php.net PHP公式サイトへ
TOP > ドキュメント > error_reportingとログレベル

A.2 error_reportingとログレベル

 SyLでは、カレントのerror_reportingの値とログレベルの値により、エラーの表示や処理内容(ログの出力など)が変化しますので、 ここではその形式をまとめています。

※SyLフレームワーク側でも、display_errorsの設定が反映されます。display_errorsがoffの場合はエラー画面が表示されません。

error_reportingとログレベルの設定

 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の値

 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」が設定されていて、正常にメール送信ができる
・発生したエラーレベルが、ログレベル以下である

これらの条件を満たした場合のみ、エラーメールが送信されます。