【CakePHP3】独自のエラーログを出力するコンポーネントを作成!
CakePHP3で、自分専用のファイルにログを出力するコンポーネントを作ってみました。
以下、その手順です。
①「app.php」を修正!
「app.php」に新しく「myerr」というオリジナルログを追加します。
'Log' => [ 'debug' => [ 'className' => 'Cake\Log\Engine\FileLog', 'path' => LOGS, 'file' => 'debug', 'levels' => ['notice', 'info', 'debug'], 'scopes' => false, //★これを入れないと「debug.log」にもログが出力されちゃう ], 'error' => [ 'className' => 'Cake\Log\Engine\FileLog', 'path' => LOGS, 'file' => 'error', 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'], ], //★↓以下を新しく追加 'myerr' => [ 'className' => 'Cake\Log\Engine\FileLog', 'path' => LOGS, 'levels' => [], 'scopes' => ['myerr'], 'file' => 'myerr.log', ], ],
②ログ出力コンポーネントを作成!
「/Controller/Component/」に新しくコンポーネント「LoggerComponent.php」を作成します。
<?php namespace App\Controller\Component; use Cake\Controller\Component; use Cake\Log\Log; class LoggerComponent extends Component { public function write($str) { Log::debug($str, ['scope' => ['myerr']]); } }
③ログを出力してみる!
お好きなコントローラー内でオリジナルログを出力してみます。
ログは「/logs/myerr.log」に記録されます。
class HogegeController extends AppController { public function err_occur() { //コンポーネント読み込み $this->loadComponent('Logger'); //ログ出力 $this->Logger->write("testes"); } }
以上!