DEV

CakePHP3 - Log出力にMonologを使う

Seldaek/monolog

$ composer require monolog/monolog

bootstrap.phpに下記を追加

include 'logger.php';

config/logger.phpに下記を追加

<?php
use Cake\Log\Log;
use Monolog\Logger;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Formatter\LineFormatter;
Log::drop('error');
Log::config('error', function () {
$log = new Logger('app');
$formatter = new LineFormatter(null, null, true);
$handler = new RotatingFileHandler(LOGS.'error.log', 10);
$handler->setFormatter($formatter);
$log->pushHandler($handler);
return $log;
});

こんな感じで使える。Slackとかに飛ばしたりしたいというときに役立ちそう。

cakeの標準機能でログ出力の調整をする場合は、app.phpのLog設定箇所を変更する。

'Log' => [
'debug' => [
'className' => 'Cake\Log\Engine\FileLog',
'path' => LOGS,
'file' => 'debug-'.date('Y-m-d'),
'levels' => ['notice', 'info', 'debug'],
'url' => env('LOG_DEBUG_URL', null),
'rotate' => 10,
'size' => '1MB'
],
'error' => [
'className' => 'Cake\Log\Engine\FileLog',
'path' => LOGS,
'file' => 'error-'.date('Y-m-d'),
'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'],
'url' => env('LOG_ERROR_URL', null),
'rotate' => 20,
'size' => '1MB'
],
],