メインメニュー
XAMPP アレンジ
IED
WSL2
-
道具箱
リポジトリ編
フレームワーク編
公開ソフトウェア
メタ
リンク
- PHP ライブラリ
- PHP 言語
apricot:usage:ja:errors-logging目次
文書の過去の版を表示しています。
Apricot ログとエラー処理
ロギング
ロギングは、monologをラップした
Apricot\Log
シングルトンが担当します。機能的には monolog と同じですが、PSR-3に従って使います。使用法: Log::{メソッド}
メソッド 機能 emergency(string $message, array $context = []) emergencyレベルのログ alert(string $message, array $context = []) alertレベルのログ critical(string $message, array $context = []) criticalレベルのログ error(string $message, array $context = []) errorレベルのログ warning(string $message, array $context = []) warningレベルのログ notice(string $message, array $context = []) noticeレベルのログ info(string $message, array $context = []) infoレベルのログ debug(string $message, array $context = []) debugレベルのログ log($level, string $message, array $context = []) 任意レベルのログ 使用例:
use Apricot\Log; Log::exception('error',$e);
設定ファイル
ロギングには以下の設定ファイルが存在します。
/your-project/config/setting
- monolog.setting.php
<?php /** * This file contains Monolog settings. */ return [ 'name' => env('LOG_NAME',env('APP_NAME')), 'path' => env('LOG_PATH',var_dir('logs')), 'level'=> env('LOG_LEVEL','debug'), 'max_files'=> 0, ];
- name — ログの名前 (初期設定は、環境変数APP_NAME(無ければAPP_NAME)の値)
- path — ログの出力パス (初期設定は、var/logs/)
- level — ログの出力レベル (初期設定は、'debug')
- max_files — ログファイルの最大保存数 (初期設定は、0(無制限))
デバッグ出力
Apricotではオンサイトでのデバッグ出力機能を実現するために、php-debugbarを採用しています。そして、Apricotのコアでは、php-debugbarが提供している
\DebugBar\StandardDebugBar
クラスをカスタマイズしたApricot\Derivations\StandardDebugBar
を作り、この機能をアプリケーションに提供しています。DebugBarクラス
DebugBar
クラスはカスタマイズされたStandardDebugBar
をラップしたシングルトンで、アプリケーションにデバック出力機能を提供しています。使用法: DebugBar::{メソッド}
メソッド 機能 renderHead():string HTMLヘッダー用のレンダリング文字列を返す render():mixed HTMLボディー用のレンダリング文字列を返す getCollector(string $name=“messages”):
\DataCollector\DataCollectorInterfaceデバッグ出力用のコレクターの取得 こららのメソッドの内、
renderHead()
とrender()
はHTMLテンプレートで使用され、ブラウザ上にデバッグ出力をレンダリングします。また、getCollector()
は以下で示す Debugクラスの生成で使用されます。
Debugクラス
Debug
クラスは、実際にデバッグ出力を行うクラスです。機能的にはDebugBarのコレクター( DataCollectorInterface )と同じですが、ロギングと同様にPSR-3に従って以下のように使います。以下の関数は基本的にvar_dump()
と同じように変数の内容をダンプします (これらの関数の違いは単に出力レベルが付いているだけです)。Debug::debug($this)
とすれば自分のメンバ変数が全てダンプされます。使用法: Debug::{メソッド}
メソッド 機能 emergency($message, array $context = []) emergencyレベル alert($message, array $context = []) alertレベル critical($message, array $context = []) criticalレベル error($message, array $context = []) errorレベル warning($message, array $context = []) warningレベル notice($message, array $context = []) noticeレベル info($message, array $context = []) infoレベル debug($message, array $context = []) debugレベル log($level, $message, array $context = []) 任意レベル 使用例:
use Apricot\Debug; Debug::debug($this);
設定ファイル
デバッグ出力には以下の設定ファイルが存在します。
/your-project/config/setting
- debugbar.setting.php
<?php /** * This file contains DebugBer settings. */ return [ 'debug' => env('APP_DEBUG',false), 'renderer' => [ 'auto_assets'=>true, 'base_url' => url('resources/debugbar'), 'base_path' => public_dir('resources/debugbar'), 'initialize' => true, 'stacked_data' => true, ], ];
debug
はデバッグ出力の有効性を指定するブール値です。この値が真の場合、デバッグ出力が有効になります。初期設定は環境変数APP_DEBUG
と同じ値です。renderer
要素には以下の子要素があります。auto_assets
— 公開用リソースファイルの自動作成を指定します。base_url
— DebugBarの公開用リソースのURLを指定します。base_path
— DebugBarの公開用リソースのサーバ内ディレクトリを指定します。initialize
— TODO: 初期化コードをレンダリングするか否かを指定します。(初期設定はtrue)stacked_data
— TODO: スタックデータをレンダリングするか否かを指定します。(初期設定はtrue)
TODO:auto_assets
が true の場合、アプリケーションの初期化時にauto_assets
が falseの場合、・・・
アセットファイル
TODO:
集約例外ハンドラー
Apricotでは例外ハンドラーとしてWhoopsを使います。コントローラで捕捉されなかった例外は、最終的にこの例外ハンドラーで捕捉するので、これは集約例外ハンドラーと呼ばれます。
集約例外ハンドラーの動作にはデバッグモードと本番モードがあります。
- デバッグモード — ログ出力して、例外内容とスタックトレースを表示する
- 本番モード — ログ出力して、利用者向けのエラーページを表示する
これらの動作をカスタマイズするには、以下のWhoopsのセットアップファイルを変更して下さい。
セットアップファイル:
/your-project/config/setup/whoops.setup.php
設定ファイル
例外ハンドラーには以下の設定ファイルが存在します。
/your-project/config/setting
- whoops.setting.php
<?php /** * This file contains Whoops settings. */ return [ 'debug' => env('APP_DEBUG',false), 'controller' => \App\Exceptions\UncaughtExceptionHandler::class, 'action' => 'render', ];
- debug — デバッグモードの場合 true (初期設定は、環境変数APP_DEBUGの値。無ければfalse)
- controller — 集約例外コントローラクラスを指定する (次項参照)
- action — 集約例外コントローラのアクションメソッド名を指定する (次項参照)
集約例外コントローラ
本番モードで集約例外ハンドラーから呼び出されるコントローラを集約例外コントローラと呼びます。上述の whoops.setting.php での設定に従い、例外発生時に
UncaughtExceptionHandler
クラスのrender()
メソッドが実行されてエラーページを表示します。初期実装されている集約例外コントローラでは、例外の種類に応じてHTTPステータスコードを以下のように設定します。
- CSRFエラーなどの TokenMismatchException( トークンエラー )は419( Page Expired )に設定
- HttpException( ボイラープレート
abort()
などよるHTTP例外 )はそのステータスコードを使用 - その他の例外は 500( Internal Server Error )に設定
集約例外コントローラは以下に配置されています。必要に応じてカスタマイズできます。
/your-project/app/Exceptions/UncaughtExceptionHandler.php
コアの例外クラス
Exceptionを継承した2つの例外クラスがあります。
Apricot\Exceptions\HttpException
HTTP例外(HTTPステータスコード400番台,500番台)Apricot\Exceptions\TokenMismatchException
トークンミスマッチ例外(CSRFトークンなどの不一致)
abort()
abort()
関数はHttpException
をスローするボイラープレートです。通常はこの例外が発生すると集約例外コントローラが補足してエラーページを表示します。以下のように使います。abort(400);
abort()
は以下のように実装されています。/** * Throws an HTTP exception. * * @param int $code * @param string $message * @throws \Apricot\Exceptions\HttpException */ function abort(int $code, string $message=null) { throw new Apricot\Exceptions\HttpException($code, $message); }
アプリの例外クラス
App\Exceptions\ApplicationException
はアプリで発生する例外クラスのベースクラスで、Exceptionクラス から派生しています。そして、ApplicationExceptionから派生した以下のクラスがあります。App\Exceptions\OptimissticLockException
楽観的ロック例外
エラーバッグ
エラーバッグ(
Apricot\Foundation\ErrorBag
)は、入力エラーなどの業務的なエラー(例外でないエラー)の為のクラスです。ErrorBag には名前を付けることができます( self::DEFAULT_NAME='error' )。バッグ内のエラーはキー付きの連想配列で保存されています。ErrorBagには以下のメソッドがあります。
メソッド 機能 __construct(array $errors=null, string $name=self::DEFAULT_NAME) エラーバッグの生成 count(string $name=null):int エラー数の取得 has(string $key, string $name=self::DEFAULT_NAME):bool キーによるエラーの存在確認 get(string $key, string $name=self::DEFAULT_NAME) キーによるエラーの取得 all(string $name=null):array 全てのエラーの取得 put($errors) エラー配列の設定 エラーバッグはIteratorAggregateインターフェースを実装してるのでforeach()などのIteratorを使用した構文が使用できます。但し、Countable インターフェイス は実装していないので、count関数ではなくErrorBag@countメソッドを使用して下さい。
バリデーションエラー用の ValidatorErrorBag クラスは、ErrorBag から派生したクラスで、'validator' という名前がついています。バリデーションエラーと他のエラーを区別するには、この名前を使用して下さい。
apricot/usage/ja/errors-logging.1599619036.txt.gz · 最終更新: 2020/09/09 11:37 by y2sunlight
コメント
https://www.eccos.us.com/ https://www.airjordan4s.us/ https://www.pandora-braceletcharms.us/ https://www.pandoras.us.com/ https://www.pandorajewelryofficialsite.us.com/ https://www.jordansretro12.us/ https://www.adidasyeezysshoes.us.com/ https://www.air-jordans11.us.com/ https://www.new-jordans.us.com/ https://www.monclerjacketsstore.us.com/ https://www.jordanscheapshoes.us/ https://www.nmds.us.com/ https://www.pandorajewelryofficial-site.us/ https://www.air-jordansneakers.us/ https://www.coatsmoncler.us.com/ https://www.sneakersgoldengoose.us.com/ https://www.nikeofficialwebsite.us.com/ https://www.air-jordan12.us/ https://www.airjordansneakers.us.com/ https://www.redbottomshoeslouboutin.us.com/ https://www.nikeair-jordan1.us.com/ https://www.newnikeshoes.us.com/ https://www.jordans-4.us/ https://www.nikeoutletfactorys.us.com/ https://www.jordan14.us.com/ https://www.ggdbsneakers.us.com/ https://www.jordan1universityblue.us.com/ https://www.jordan11red.us.com/ https://www.redbottomslouboutin.us.org/ https://www.shoeslouboutin.us.com/ https://www.jordansneakerss.us/ https://www.canadapandoracharms.ca/ https://www.airforceoneshoes.us.com/ https://www.mensnikeshoes.us.com/ https://www.airjordanretro11.us.com/ https://www.birkin-bag.us.com/ https://www.pandorascharms.us.com/ https://www.goldengooseshoess.us.com/ https://www.balenciagaofficial.us.com/ https://www.jordan-4.us.com/ https://www.christianlouboutinshoesinc.us.com/ https://www.jacketsmoncleroutlet.us.com/ https://www.adidasnmdr1.us.org/ https://www.air-jordanssneakers.us/ https://www.airjordan5.us/ https://www.vanscom.us.com/ https://www.nikeoutletstoresonlineshopping.us.com/ https://www.adidasyeezysneakers.us.com/ https://www.jordanretro-11.us.com/ https://www.yeezys.com.co/ https://www.outletnikestore.us.com/ https://www.jordan1.us.com/ https://www.kyrieirving-shoes.us.org/ https://www.jordan11ssneakers.us/ https://www.nikeairmax-shoes.us.com/ https://www.nikeairmax98.us/ https://www.retro-jordans.us/ https://www.jordans1.us.com/ https://www.yeezy.us.org/ https://www.air-max90.us.com/ https://www.jordan-8.us/ https://www.soccercleats.us.com/ https://www.air-jordan1s.us.com/ https://www.jamesharden-shoes.us.org/ https://www.goldengoosesneakerss.us.com/ https://www.huarachesnike.us.com/ https://www.christianslouboutinshoes.us.com/ https://www.nikesnkrs.us.com/ https://www.jordanretros.us.com/ https://www.pandorasjewelry.us.com/ https://www.jordan13s.us/ https://www.nikeshoesforwomens.us.com/ https://www.airjordansnew.us.com/ https://www.jordanshoess.us.com/ https://www.jordans4retro.us/ https://www.air-jordan6.us.com/ https://www.goldengoosesales.us.com/ https://www.jordan10.us.com/ https://www.jordan-retro6.us/ https://www.fitflop-shoes.us.org/ https://www.nikeair-maxs.us.com/ https://www.jordans1s.us.com/ https://www.jordans11.us.com/ https://www.jordan11low.us.com/ https://www.louboutinshoesheels.us.com/ https://www.nike-airmax2018.us.com/ https://www.outletgoldengoose.us.com/ https://www.jordan5.us.com/ https://www.ggdbs.us.com/ https://www.airjordan11s.us.com/ https://www.newjordan11.us/ https://www.monclercom.us.com/ https://www.nikeairjordan.us.com/ https://www.pandoracanadajewelry.ca/ https://www.christian-louboutinheels.us.com/ https://www.airjordan6rings.us/ https://www.christianslouboutin.uk.com/ https://www.nikesoutletstoreonlineshopping.us.com/ https://www.air-jordan6.us/ https://www.airmax270s.us.com/ https://www.nikeshoesoutletfactory.us.com/ https://www.lebron-shoes.us.com/ https://www.monclervest.us.com/ https://www.goldengoosemidstar.us.com/ https://www.nike--shoes.us.com/ https://www.jordan1lows.us.com/ https://www.jordansshoesforsale.us.com/ https://www.jordan-retro1.us.com/ https://www.jordan-shoesformen.us.com/ https://www.pandoraonline.us/ https://www.fjallraven-kanken.us.com/ https://www.airjordanshoess.us.com/ https://www.nikeoutletshoes.us.com/ https://www.airjordan1s.us.org/ https://www.yeezys-shoes.us.com/ https://www.pandoraringssite.us/ https://www.yeezys-shoes.us.org/ https://www.jordan13.us.org/ https://www.pandorajewellery.us.com/ https://www.jordan12retro.us.com/ https://www.airmax270.us.org/ https://www.redbottomshoesforwomen.us.com/ https://www.ggdbshoes.us.com/ https://www.goldensgoose.us.com/ https://www.jordanshoesretro.us.com/ https://www.ferragamos.us.org/ https://www.jordans-11.us/ https://www.monclerstores.us.com/ https://www.jordans-sneakers.us.com/ https://www.nikesfactory.us.com/ https://www.newjordansshoes.us.com/ https://www.goldengooseoutletfactory.us.com/ https://www.goldengoosessneakers.us.com/ https://www.jordan12retros.us/ https://www.jordansretro3.us/ https://www.air-jordan4.us.com/ https://www.balenciagatriples.us.org/ https://www.airjordan3s.us/ http://www.pandorarings.us.com/ https://www.retrosairjordan.us/ https://www.yeezyonline.us.com/ https://www.jordanretro11mens.us/ https://www.jordans5.us/ https://www.nikeshoes-cheap.us.com/ https://www.jordan-12.us.com/ https://www.valentinosshoes.us.org/ https://www.retrosjordans.us/ https://www.nike-jordans.us.com/ https://www.nikesales.us.com/ https://www.jordan11sshoes.us/ https://www.jordan9.us.com/ https://www.airmax-95.us.com/ https://www.nikefactoryoutlets.us.org/ https://www.asics-running-shoes.us.com/