Yii2: как записывать логи в файл при тестировании с Codeception? - PullRequest
0 голосов
/ 04 мая 2018

Я настроил компонент log с FileTarget в основной конфигурации и ожидал, что Yii::error() будет писать сообщения в файл, когда я начну тестирование. Но ведение журнала было зафиксировано Codeception\Lib\Connector\Yii2\Logger, а папка журнала остается пустой.

Можно ли заставить Yii2 записывать логи в этой ситуации?

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Вы можете настроить правильный регистратор перед тестом:

public function testSomething() {
    Yii::setLogger(Yii::createObject(\yii\log\Logger::class));
    Yii::$app->log->setLogger(Yii::getLogger());
    // log something
    Yii::getLogger()->flush();
    // test log file
}
0 голосов
/ 05 мая 2018
<?php

namespace tests;

class SomeTest extends \yii\codeception\TestCase
{

    public function testLogMessage()
    {
        \Yii::error('something bad occurred');
    }

}

И это правильно регистрирует ошибку в runtime / log / app.log с сообщением:

2018/05/05 03:42:04 [127.0.0.1] [ошибка] [приложение] произошло что-то плохое

...