2019.12.19
STAFF BLOG
スタッフブログ
TECHNICAL
テクログ

FuelでのログはView側では、
大本(言い方)try {} catch () {}でくくられているため、
基本全てのエラーが吐き出されるようになっています。
そして、タスク(cron)実行する際にもログが出てほしいな~
と思い、調べた結果です。
タスクの場合Fuelの本体とは別のロジックとなっており、
ログに吐き出すようにするには、コーダーさんが処理内に
try {} catch () {}などでくくらなければ
エラーを明示的に吐き出すことができませんでした。(なぜ・・・)
参考サイトとしてリンクを貼りますが(https://qiita.com/notona/items/b821ed0ad04ac3ef8f80)
以下のようなことが書かれておりました
~~~~~
php7 では一部のエラーが Error例外 として throw されるようになりました。
そのため Error と ErrorException がどちらも実装しているインターフェースになっている Throwable でキャッチする
~~~~~
ざっくりいうと、エラーを拾う(出力させる)ためには、タスク処理を
ごっそりと「try {} catch (Throwable $e) {}」でくくる必要がある。
もしくは、エラー出力としcronに設定する際に
0 0 1 * * [php path] [oil path] refine [task name] 2>> [output file name]`date +%Y%m%d`.log
のように、cronを設定する必要がある(この場合は try {} catch () {}の必要はない)
ただ、oil深くまで潜ると。。。。ありました!!
エラー時には、コンソールに表示させる記述が。
こいつを、オーバライドして、ログに吐き出されるようにすれば、
タスクが実行されて、try {} catch () {}でくくらなくても、うまくいく(はず)
※やって見る方は自己責任でお願いします。