Tasksクラスで使用するログファイルとWEBサイトで使用するログファイルを別々に管理するときのメモ。
通常、FuelPHPでLogクラスを使用するとconfig.phpで設定した出力先にログファイルを作成します。
ですが、Tasksクラスでは別の場所にログを作成したい要望などは存分にあると思っています。
ってか少なくとも自分はありました。
どうやって実装するのか。
Config.phpのログを制御している設定をTasksクラスで上書きしてあげればOKです。
実際のコードだと
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Hogetask { /** * @param string $speech */ public static function run($speech = null) { static::init(); // 開始ログ \Log::info('batch start', 'hogetask'); // TODO 処理を書いていく } /** * 初期化処理 */ private static function init() { \Config::set('log_path', APPPATH.'tasks'.DS.'logs'.DS.date('Y/m').DS); } } |
こんな感じになります。
ここが肝で、これをLog::xxxxを実行する前に記載してあげる必用があります。
Log::xxxxを実行した後に記載すると上書きされないので注意が必用です。
\Config::set(‘log_path’, APPPATH.’tasks’.DS.’logs’.DS.date(‘Y/m’).DS);
これで、
WEBサイトでは「app/logs/yyyy/mm/dd.php」にログが出力され
Tasksクラスでは「app/tasks/logs/yyyy/mm/dd.php」にログが出力されるようになります。
One comment to this article
Pingback:
【FuelPHP】[訂正版] Tasksクラスでログの出力先を変更 | プログラマのめもぶろぐ