大量に表示されるログから必要な情報を見つけやすくしたい
開発中には、さまざまな情報をログに出力することで、正しく動作しているかどうかを確認しますが、デバッグ情報などを大量に出力している環境では、肝心のエラー情報などが埋もれてしまい、問題の発見が遅れてしまうことになりかねません。
ログを色分けして表示する
このような場合には、ログレベルによってメッセージ色を変更することで、特定のログ情報を見つけやすくできるようになります。
Catalystのログモジュールを拡張し、色指定できるようなプラグインとして、Catalyst::Plugin::Log::Colorfulを紹介します。
まず最初に、Catalyst::Plugin::Log::Colorfulをインストールするには、rootユーザで次のコマンドを実行します。
# perl -MCPAN -e 'install Catalyst::Plugin::Log::Colorful'
Catalyst::Plugin::Log::Colorfulの例
このプラグインを使用するには、アプリケーションモジュールファイルで次のように指定します。
# 使用するプラグインを指定 use Catalyst qw/ -Debug ConfigLoader Static::Simple Log::Colorful /;
後は通常のログ出力と同様に、Catalyst::Logに定義されているdebugなどのメソッドを、ログレベルに応じて呼び出します。明示的に文字色と背景色を指定することもできます。
sub log :Local { my ( $self, $c ) = @_; $c->log->debug('debug'); $c->log->info('info'); $c->log->warn('warn'); $c->log->error('error'); $c->log->fatal('fatal'); # 明示的に文字色、背景色を指定できる $c->log->debug('debug', 'red', 'white'); $c->log->warn( 'warn', 'blue' ); $c->response->body('Log!'); }
このプラグインは、ANSIのエスケープコードによる色コード指定を利用しているため、対応しているターミナルソフトウェア(TeratermやPuTTYなど)でなければ正しく色が表示されません。
デフォルト設定の場合だと、Teratermでは次のように表示されます。
デフォルトの色設定を変更するには、設定ファイルで指定する方法の他に、アプリケーションモジュールファイルのconfigで、次のように指定することもできます。
__PACKAGE__->config( name => 'PluginSample1', 'Plugin::Log::Colorful' => { color_table => { debug => { color => 'white', bg_color => 'blue', }, info => { color => 'yellow', bg_color => 'black', }, warn => { color => 'blue', bg_color => 'green', }, error => { color => 'red', bg_color => 'yellow', }, fatal => { color => 'red', bg_color => 'green', }, }, }, );
この設定の実行例は次のようになります。