【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");
}
}以上!