CakePHPでlog関数を利用すると、デフォルト設定でdebug.logまたはerror.logにログが出力されます。この状態のままだと、バッチファイルが複数ある時など、どのバッチから呼ばれた結果のログなのか、わからなくなってしまいます。
そこで、バッチごとにログの出力ファイルを切り替えるという方法をよく取っています。この記事では、debug.log、error.log以外のファイルにログファイルを出力する方法を紹介します。
■bootstrap.phpに定義をする
LOG_TEST_FILEという定義を追加します。ここで指定した設定によって出力されるファイルを変更することができます。
define('LOG_TEST_FILE', 'test_log');
CakeLog::config('test_log', array(
'engine' => 'FileLog',
'types' => array('test_log'),
'file' => 'test_log',
));
■実際の出力のコード
以下のように記述を行うとtest_log.logにログが出力されます。2番めの引数のLOG_TEST_FILEがbootstrap.phpに定義した設定となります。
$this->log(__LINE__ . '::' . __METHOD__ . '::ろぐでーす', LOG_TEST_FILE);
バッチごとにログファイルを切り替えておくと、非常に便利かと思います。ぜひやってみてください。