[CakePHP] yalogを使ってLog4phpでログ出力するようにしてみた

java log?
Creative Commons License photo credit: Myles!

CakePHPの「Yalog」というプラグインを使って、デフォルトのログエンジンではなくLog4phpでログ出力するようにする方法をメモ。

ちなみに当方の環境はCakePHP 1.3.8です。

yalogとは

yalog(Yet Another Logger for CakePHP)は、CakePHPのログエンジンをデフォルトのものよりも便利にするためのCakePHPのプラグインです。

bootstrap.phpにちょっと設定を書き加えるだけで、ログローテートが行えたり、ログ出力に使うログエンジン自体を変更したりできちゃいます。

yalog導入からLog4phpを使ってログ出力するまで

yalogの導入からLog4phpを使ってログを出力するまで、順を追って説明していきます。

yalogの導入

CakePHPの「app/plugins」ディレクトリ以下にyalogのソースコードを設置します。以下のように「git clone」でソースコードを持ってくると楽です。

これでお使いのCakePHPからyalogの機能が使えるようになります。

Log4phpの設置

yalogにLog4phpが含まれているわけではないので、別途Log4phpを以下のURLからダウンロードします。「apache-log4php-2.0.0-incubating-src.tar.gz」というファイルをダウンロードして下さい。

ダウンロードできたらファイルを展開し、中にある「src/main/php」ディレクトリに含まれる全てのファイルを、CakePHPの「app/plugins/yalog/vendors/log4php」にコピーします。これでLog4phpの設置は完了です。

各種設定

では早速、必要な設定を行っていきます。

まず、CakeLogに対して「yalogを介してLog4phpでログ出力しますよ」ということを伝える必要があります。CakePHPの「app/config/bootstrap.php」に以下を追記してください。

次はLog4phpの設定。今回は標準出力とファイルにログを出力してもらうように設定を行います。CakePHPの「app/plugins/yalog/libs/log/log4php.properties」の中身を一旦消して以下の内容に書き換えちゃいます。

さぁ、これでLog4phpでログ出力する準備は整いました。

ログ出力するコードの作成

試しにログを出力するだけの簡単なShellを書いてみます。「app/vendors/shells/logging.php」を次の内容で作成してください。

できたら以下のコマンドでShellを実行してください。Log4phpを使ってログが出力されるはずです。

※CakePHP 1.3.8には「cake/console/cake」の「-app」オプションが効かないバグがあるので、いちいち「app」ディレクトリに移動してからShellを実行してます。
(参考:みずにっき » CakePHP 1.3.8 での shell で -app パラメータが効かない問題点

まとめ

これでめでたくCakePHPからLog4phpを使ってログ出力できるようになりました。CakePHPのShellをcronで定期的かつ頻繁に実行する場合なんかは、ロギングが非常に重要になってくると思ってます。

yalog、とっても簡単でした。作者のk1LoWさん、ありがとうございます。

次はログローテートも試してみようかな。
それでは!