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行出力すると発狂する場合はオーバーライドした関数を編集してください