14 января, в 08:51

Отдельный лог для ошибок 404 в yii2

label

После выкладывания приложения в открытый доступ логи обычно забиты ошибками 404. Это сильно затрудняет поиск реальных багов. Поэтому такие логи стоит выносить в отдельный файл.

В Yii2 ошибки 404 имеют категорию yii\web\HttpException:404. Добавляем еще один FileTarget для ошибок с такой категорией, и исключаем их из основного лога. Для ошибок такого рода нужна информация только о GET параметрах, поэтому добавляем logVars.

Думаю, это уместно взять за правило для всех проектов на Yii.

'log' => [
    'traceLevel' => YII_DEBUG ? 3 : 0,
    'targets' => [
        [
            'class' => 'yii\log\FileTarget',
            'except' => ['yii\web\HttpException:404'],
            'levels' => ['error', 'warning'],
        ],
        [
            'class' => 'yii\log\FileTarget',
            'categories' => ['yii\web\HttpException:404'],
            'levels' => ['error'],
            'logVars' => ['_GET'],
            'logFile' => '@app/runtime/logs/unresolved.log',
        ]
    ]
],

Работает на Yii Framework