You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.8 KiB
105 lines
2.8 KiB
<?php |
|
/** |
|
* @author Carsten Brandt <mail@cebe.cc> |
|
*/ |
|
|
|
namespace yiiunit\framework\log; |
|
|
|
use yii\helpers\FileHelper; |
|
use yii\log\Dispatcher; |
|
use yii\log\Logger; |
|
use Yii; |
|
use yiiunit\TestCase; |
|
|
|
/** |
|
* @group log |
|
*/ |
|
class FileTargetTest extends TestCase |
|
{ |
|
protected function setUp() |
|
{ |
|
parent::setUp(); |
|
$this->mockApplication(); |
|
} |
|
|
|
public function booleanDataProvider() |
|
{ |
|
return [ |
|
[true], |
|
[false] |
|
]; |
|
} |
|
|
|
/** |
|
* @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, // 1 MB |
|
'maxLogFiles' => 1, // one file for rotation and one normal log file |
|
'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')); |
|
} |
|
} |