edo1z blog

プログラミングなどに関するブログです

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'
    ],
],