大量に表示されるログから必要な情報を見つけやすくしたい
開発中には、さまざまな情報をログに出力することで、正しく動作しているかどうかを確認しますが、デバッグ情報などを大量に出力している環境では、肝心のエラー情報などが埋もれてしまい、問題の発見が遅れてしまうことになりかねません。
ログを色分けして表示する
このような場合には、ログレベルによってメッセージ色を変更することで、特定のログ情報を見つけやすくできるようになります。
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',
},
},
},
);
この設定の実行例は次のようになります。

