SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Webアプリケーションフレームワーク「Catalyst」入門

初めてのCatalyst入門(11)
プラグイン&モジュール大全

ロギングからTwitter対応まで


  • X ポスト
  • このエントリーをはてなブックマークに追加

大量に表示されるログから必要な情報を見つけやすくしたい

 開発中には、さまざまな情報をログに出力することで、正しく動作しているかどうかを確認しますが、デバッグ情報などを大量に出力している環境では、肝心のエラー情報などが埋もれてしまい、問題の発見が遅れてしまうことになりかねません。

ログを色分けして表示する

 このような場合には、ログレベルによってメッセージ色を変更することで、特定のログ情報を見つけやすくできるようになります。

 Catalystのログモジュールを拡張し、色指定できるようなプラグインとして、Catalyst::Plugin::Log::Colorfulを紹介します。

 まず最初に、Catalyst::Plugin::Log::Colorfulをインストールするには、rootユーザで次のコマンドを実行します。

[リスト2]Catalyst::Plugin::Log::Colorfulのインストール
# perl -MCPAN -e 'install Catalyst::Plugin::Log::Colorful'
Catalyst::Plugin::Log::Colorfulの例

 このプラグインを使用するには、アプリケーションモジュールファイルで次のように指定します。

[リスト3]PluginSample1.pm(一部)
# 使用するプラグインを指定
use Catalyst qw/
  -Debug
  ConfigLoader
  Static::Simple
  Log::Colorful
/;

 後は通常のログ出力と同様に、Catalyst::Logに定義されているdebugなどのメソッドを、ログレベルに応じて呼び出します。明示的に文字色と背景色を指定することもできます。

[リスト4]ログ出力サンプル
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で、次のように指定することもできます。

[リスト5]ログ出力サンプル
__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',
      },
    },
  },
);

 この設定の実行例は次のようになります。

PluginSample1.pmで色指定した場合のコンソール表示色
PluginSample1.pmで色指定した場合のコンソール表示色

次のページ
メモリリークを発見する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Webアプリケーションフレームワーク「Catalyst」入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 花田 善仁(ハナダ ヨシヒト)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5390 2010/09/08 17:56

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング