CakePHP3 - Log出力にMonologを使う
$ composer require monolog/monolog
bootstrap.phpに下記を追加
include 'logger.php';config/logger.phpに下記を追加
<?phpuse 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' ],],