Cakephp3でいい感じにログを吐き出す方法
$this->log()でいい感じに吐き出したい
ポイント
・log関数にinfoとかwarningとかのレベルを入れなきゃいけなくなったので初期値を与えてオーバーライドする
・呼び出し元をdebug_backtraceで取ってきて整形する
<?php // AppControllerに追加してlog関数をオーバーライド public function log($message,$level='info',$filename='debug'){ $bt = debug_backtrace(); parent::log('#### Class '.$bt[1]['class'].' | function '.$bt[1]['function'].' - line '.$bt[0]['line'], $level, $filename); parent::log($message, $level, $filename); }
コントローラー内で$this->logが使える
<?php // SomeController function index () { $this->log('hoge'); } // app/logs/debug.log 2017-11-01 16:29:14 Info: #### Class App\Controller\Admin\ArticlesController | function __authChk - line 746 2017-11-01 16:29:14 Info: hoge
表示形式が気に食わなかったり一つのログで2行出力すると発狂する場合はオーバーライドした関数を編集してください