2014/04/02

Chrome Logger 便利ですね!

@tokuhirom さんが書いてる Web::ChromeLogger というモジュールがあって、これは Chrome Logger を Perl で利用するためのモジュール。

Chrome Logger

Chrome Logger 自体はサーバサイドで生成した情報を HTTP ヘッダの X-ChromeLogger-Data に突っ込んでおけば、web ブラウザであるところの google chrome の console ログに表示するための拡張機能。

SPEC はこちらにある http://craig.is/writing/chrome-logger/techspecs

開発時のお助け情報出力に超便利。

Amon2::Plugin::Web::ChromeLogger

というわけで、Amon2 を使った web アプリで Chrome Logger をさくっと使えるようにプラグイン書きました。

Amon2::Plugin::Web::ChromeLogger

以下のようにプラグインをロードして、

__PACKAGE__->load_plugins('Web::ChromeLogger');

以下のように、$cchrome というメソッドが生えているので、そいつで情報を吐いておくと、console に表示されます。

$c->chrome('aloha!');

chrome メソッドだと info で吐くだけなので、もし他のログタイプで吐きたい場合は、やっぱり $c に生えている chrome_logger メソッドで、以下のように Web::ChromeLogger のインスタンスに直接アクセスします。

$c->chrome_logger->warn('mahalo!');

簡単ですね!

なお、このプラグインは、$ENV{PLACK_ENV}production の時は無効になります。

Plack::Middleware::ChromeLogger

Amon2 使ってないよ! という Plack 生派のあなたのために、Plack::Middleware::ChromeLogger も書きました。

以下のような感じです。

use Plack::Builder;

builder {
  enable "ChromeLogger";
  sub {
    $env->{"psgix.chrome_logger"}->info("foo");
    [200, [], ["OK"]];
  };
};

苦渋の psgix です。はい。便利なアクセッサは各自実装すると良いと思いますが、アプリケーションにプラグイン機構あればそっちで普通書きますね。すいません。

ちなみに、Mojolicious のやつは https://metacpan.org/release/Mojolicious-Plugin-ChromeLogger こんなのがあります。

現場からは以上でーす。

サイト内検索