Yii2:如何在使用Codeception进行测试时写入文件中的日志?

时间:2018-05-04 11:24:07

标签: php logging yii2 codeception

我在主配置中设置了log组件FileTarget,当我启动测试时,预期Yii::error()会在文件中写入消息。但是Codeception\Lib\Connector\Yii2\Logger抓住了日志记录,日志文件夹仍为空。

在这种情况下是否可以制作Yii2写日志?

2 个答案:

答案 0 :(得分:1)

<?php

namespace tests;

class SomeTest extends \yii\codeception\TestCase
{

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

}

这正确地记录了运行时/ log / app.log下的错误消息:

2018/05/05 03:42:04 [127.0.0.1] [错误] [申请]发生了一些不好的事情

答案 1 :(得分:1)

您可以在测试前配置正确的记录器:

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
}