Laravel使ってみた (9) - Error&Logging -
http://laravel.com/docs/errors のドキュメント読み
Laravel上でのエラーとかはApp::abortとかでHTTPステータスコードやメッセージを送出してエラーにするとかあるけど、それをキャッチするにはapp/start/globals.phpなどで
<?php
App::error(function(Exception $exception, $code) {
Log::error($exception);
});
とか定義出来て、んまぁResponseをリターンする事も出来るっていう感じですかね。でルーティングが見つからないとかのエラーは
<?php
App::missing(function($exception) {
return Response::make("not found", 404);
});
とかも出来ちゃう模様で。んで
App::errorとApp::missingを両方定義した場合に、存在しないアクションとかやるとerrorな方が発生するっぽい。引数の$codeで404ならreturnする的な事すれば、App::missingに処理が及ぶ模様
— kinjouj (@kinjou_j) July 10, 2013
でコントローラーとかからApp::abortとかではなく単純に例外が発生したら引数の$codeは500になる?
— kinjouj (@kinjou_j) July 10, 2013
っていう感じ。前者のやつは結構ポイントじゃないかなーって思うんですが、App::missingとApp::errorを両方定義しているとmissingに処理が回らなかった。という事で$codeが404な場合にはreturnしちゃえば処理が回る模様。ソースで把握した訳じゃないので非理論的なんですが
んで持ってログに関しては http://laravel.com/api/class-Illuminate.Log.Writer.html を参考。正確にはLog.Writerなクラスを使うんだけれども、例えばLogクラスを使ってロギングするにあたって、ちょっとそれ取りたいとかっていう場合とかには
<?php
Log::listen(function($level, $message, $context) {
});
な感じでlisten出来ちゃう模様げ。んまぁ同期的なので、ここの処理で遅くなるような事をすると色々問題になりそうなのであんま余計な事しない方が良いかもですね。んまぁエラー起きたら、エラーレポートをどっかのシステムにぶん投げるとか、そういうのも結構遅くなる要因にもなりそうだけど
とりまぁドキュメントはこんくらいかなと