2016/05/31

Rack::RequestId の Perl版 Plack::Middleware::RequestId

リクエストごとにユニークな ID を発行して、ログファイルやなんかにそれを入れておくとgrep ビリティあがって楽ですよねという Rack::RequestId を Plack に移植して Plack::Middleware::RequestId 書いた。

enable 'RequestId';

リクエストごとに $env->{'psgix.request_id'} に ID が格納されてるので、Request クラスで参照できるようにしといたり、ログファイル書くときに必ず ID が書かれるようにしておくとうれしみが増す。デフォルトで HTTP レスポンスヘッダにも ID が入るようになってるので、横取りしてアクセスログに書いたりしてもいいかもしれない。オプションで任意の環境変数にもストアすることもできるし、$Plack::Middleware::RequestId::request_id というグローバルに参照できる変数にも実はストアされてるので、どこからでも参照可能なようにしている。

IDの生成ルーチン独自にしたいとか、もろもろストアのキー変更したいというのもオプションで対応できるので詳しくは POD 参照してみてください。

サイト内検索