/**
* @dataProvider booleanDataProvider
*/
public function testRotate($rotateByCopy)
{
$logFile = Yii::getAlias('@yiiunit/runtime/log/filetargettest.log');
FileHelper::removeDirectory(dirname($logFile));
mkdir(dirname($logFile), 0777, true);
$logger = new Logger();
$dispatcher = new Dispatcher(['logger' => $logger, 'targets' => ['file' => ['class' => 'yii\\log\\FileTarget', 'logFile' => $logFile, 'levels' => ['warning'], 'maxFileSize' => 1024, 'maxLogFiles' => 1, 'logVars' => [], 'rotateByCopy' => $rotateByCopy]]]);
// one file
$logger->log(str_repeat('x', 1024), Logger::LEVEL_WARNING);
$logger->flush(true);
clearstatcache();
$this->assertTrue(file_exists($logFile));
$this->assertFalse(file_exists($logFile . '.1'));
$this->assertFalse(file_exists($logFile . '.2'));
$this->assertFalse(file_exists($logFile . '.3'));
$this->assertFalse(file_exists($logFile . '.4'));
// exceed max size
for ($i = 0; $i < 1024; $i++) {
$logger->log(str_repeat('x', 1024), Logger::LEVEL_WARNING);
}
$logger->flush(true);
// first rotate
$logger->log(str_repeat('x', 1024), Logger::LEVEL_WARNING);
$logger->flush(true);
clearstatcache();
$this->assertTrue(file_exists($logFile));
$this->assertTrue(file_exists($logFile . '.1'));
$this->assertFalse(file_exists($logFile . '.2'));
$this->assertFalse(file_exists($logFile . '.3'));
$this->assertFalse(file_exists($logFile . '.4'));
// second rotate
for ($i = 0; $i < 1024; $i++) {
$logger->log(str_repeat('x', 1024), Logger::LEVEL_WARNING);
}
$logger->flush(true);
clearstatcache();
$this->assertTrue(file_exists($logFile));
$this->assertTrue(file_exists($logFile . '.1'));
$this->assertFalse(file_exists($logFile . '.2'));
$this->assertFalse(file_exists($logFile . '.3'));
$this->assertFalse(file_exists($logFile . '.4'));
}