symfonyのタスクからログファイルにログを記録する
TwitterにてTakiTakeさんがつぶやいていたので、気になって調べてみました。
いろいろググッたところ、次のエントリが見つかりました。
エントリの内容を簡単にまとめると以下のような感じです。
- symfonyのtaskはsfTaskの派生クラスで、sfTask::log($messages)メソッドなどを利用できる。
- sfTask::logメソッドは、command.logイベントを発生させる。
- したがって、タスク側でcommand.logイベントをファイルに記録するsfFileLoggerオブジェクトを作成して、このイベントにconnectすればOK
というわけで、以下のようなコードが示されています。
<?php $file_logger = new sfFileLogger($this->dispatcher, array( 'file' => $this->configuration->getRootDir().'/log/task.log' )); $this->dispatcher->connect('command.log', array($file_logger,'listenToLogEvent'));