CakePHPで独自ログを出力する方法

こんにちは!ぐちです。

ログ

どんなシステムだろうと操作履歴のログやら処理結果のログを記録していると思います。いつ、どんな操作があり、どんな結果になったとか。

システムの利用者から問い合わせがあった場合に調査するのに使ったりしますよね。

また開発時でもログを表示することでデバッグするのもよくあることです。

デフォルトログ

CakePHPにはいくつかのログ出力先がデフォルトで用意されていますがデフォルトで表示されるログに独自で表示したいログが埋もれてしまい期待するログを見つけるのに時間がかかることもあります。

そこで今回はCakePHPにおいて独自のログをファイルへ出力する方法をご紹介したいと思います。

出力設定

CakePHP2以降は設定は以下のファイルに記述されています。

app/Config/bootstrap.php

このファイルの中を探していくと下記のような部分があると思います。これがデフォルトで用意されているログ設定です。

CakeLog::config('debug', array(
    'engine' => 'File',
    'types' => array('notice', 'info', 'debug'),
    'file' => 'debug',
));
CakeLog::config('error', array(
    'engine' => 'File',
    'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
    'file' => 'error',
));

これらの設定では下記の通り、

  • app/tmp/logs/debug.log
  • app/tmp/logs/error.log

それぞれログファイルが出力されます。

独自ログ

デフォルトのログファイルとは別のファイルへ独自ログだけを出力するには上記のデフォルト設定の下に下記のように設定を追加します。

CakeLog::config('operation', array(
    'engine' => 'File',
    'types' => array('operation'),
    'file' => 'operation',
));

このように設定することで

  • app/tmp/logs/operation.log

にログファイルが出力されるようになります。

使い方は以下の通りです。

$this->log('インデックス','operation');

まとめ

デフォルトのログと分けておくことで重要な情報を見落とすこともなくなるのでオススメです。特に操作系ログやDBへのアクセスログなどですかね。

では今回はこの辺で。