こんにちは。お盆休みは地元に帰り、あさりが食べたいなぁと思い、冷蔵庫をあさり続けましたが、シジミしかありませんでした。シジミの申し子、勝利です。
お後が宜しいようで・・・
さぁ、茶番は終わりにして、今回は久しぶりのCakePHPネタです。
CakePHPで任意のログファイルへログを出力する方法をご紹介たいと思います。
どうぞよろしくお願い致します。
経緯や用途
理由なんて後からつければいーんです。自分自身が作りたいと決めたら作ればいーんです。
作業している際や、本番リリース後等に自分だけのログ出力ファイルやアプリケーションの仕様的にCakePHPのログ以外のログが必要になったり欲しくなったりしたことはないですか?
もちろんログ出力だけであればCakePHPに備わっているものを使用したらいいと思うのですが、CakePHPでデフォルトで吐き出されるログによって汚されたりすると、自分が吐き出したログがどこに行っちゃたのかなーってブチ切れちゃいますよね♪
そんな時に今回のTipsが役に立ちます。
そう、そもそも出力するログファイルを変えてしまえばいいのです。
要は、自分専用のログ出力ファイルへ出力するようにするのです。
既存のログファイルも汚さずにできますね。
今回僕が行う対象バージョンは、
CakePHP ver 2.3.x
です。
CakeLogの設定
ver 2系から??はCakeLogの設定は、
app/Config/bootstrap.php
にて行っていますね。
そこでそれらしいのを探していくと・・・
CakeLog::config('debug', array(
'engine' => 'FileLog',
'types' => array('notice', 'info', 'debug'),
'file' => 'debug',
));
CakeLog::config('error', array(
'engine' => 'FileLog',
'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
'file' => 'error',
));
ありましたね。CakeLogの設定が。
これがデフォルトの設定で、
- app/tmp/logs/debug.log
- app/tmp/logs/error.log
へログを吐き出してくれていると思います。
今回はこのデフォルトとは異なるログファイルを出力するようにするのです。
たとえばこんな感じ・・・
app/tmp/logs/log_for_you.log
上記に出力するための設定は、
define('LOG_FOR_YOU', 'log_for_you');
CakeLog::config('log_for_you', array(
'engine' => 'FileLog',
'types' => array('log_for_you'),
'file' => 'log_for_you',
));
みたいな設定をしてやってください。
自分だけのログを吐き出してみる
吐き出し方は、いつものCakePHPのやつです。
第二引数を自分色に染めてあげましょう。
$this->log('君のためだけのログ', LOG_FOR_YOU);
これを ViewでもControllerでもModelでも好きなところに飾ってあげましょう。
さぁ、できたファイルを確認してみよう
ファイルはいつもの場所、
app/tmp/logs
作成されるファイルは、君のためだけのログファイル。。。
app/tmp/logs/log_for_you.log
そして、書き出されたログは君のためだけのログ。。。
2213-12-24 00:00:01 Log_for_you: 君のためだけのログ
さぁ、楽しくなってきましたね。
そして、これで終わりとなります。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。