Сохранение ошибок в файл

Ошибки сохраняются в файл runtime/logs/app.log.

Чтобы записать ошибку в файл, используется метод Yii::error().

Yii::error('Не удалось выполнить код');

В файле будет записана ошибка, а также дополнительная иформация (дата создания, место вызова ошибки, ответ сервера, настройки пользователя).

Пример сообщения:

2018-06-17 20:34:44 [127.0.0.1][-][-][error][application] Не удалось выполнить код

Данные для сохранения

При логировании также сохраняется такие данные, как ответ сервера, информация о браузере пользователя, куки и другое.

Можно указать данные, которые надо сохранять через параметр logVars.

# config/web.php

$config = [
    // …
    'log' => [
        'targets' => [
            [
                'class' => 'yii\log\FileTarget',
                'levels' => ['error', 'warning'],
                'logVars' => ['_SERVER'],
            ],
        ],
    ],
];

В коде выше указано, что в логах надо сохранять только ответ сервера.

Добавить текст в логирование

По умолчанию, перед логом сохраняется IP-пользователя. Можно задать свою информацию в файле настроек config/web.php через параметр prefix.

# config/web.php

$config = [
    // …
    'log' => [
        'targets' => [
            [
                'class' => 'yii\log\FileTarget',
                'levels' => ['error', 'warning'],
                'prefix' => function ($message) {
                    return '[IP: '.Yii::$app->request->userIP.']';
                }
            ],
        ],
    ],
];

Сообщения начнут сохраняться в следующем формате:

2018-06-17 20:34:44 [IP: 127.0.0.1][error][application] Не удалось выполнить код