Directory creation is moved to export() method

This commit is contained in:
Dmitry Alekseev
2018-02-18 12:57:09 +03:00
parent d131d08ce1
commit 1b14628dbf
2 changed files with 22 additions and 4 deletions

View File

@ -85,10 +85,6 @@ class FileTarget extends Target
} else { } else {
$this->logFile = Yii::getAlias($this->logFile); $this->logFile = Yii::getAlias($this->logFile);
} }
$logPath = dirname($this->logFile);
if (!is_dir($logPath)) {
FileHelper::createDirectory($logPath, $this->dirMode, true);
}
if ($this->maxLogFiles < 1) { if ($this->maxLogFiles < 1) {
$this->maxLogFiles = 1; $this->maxLogFiles = 1;
} }
@ -105,6 +101,11 @@ class FileTarget extends Target
*/ */
public function export() public function export()
{ {
$logPath = dirname($this->logFile);
if (!is_dir($logPath)) {
FileHelper::createDirectory($logPath, $this->dirMode, true);
}
$text = implode("\n", array_map([$this, 'formatMessage'], $this->messages)) . "\n"; $text = implode("\n", array_map([$this, 'formatMessage'], $this->messages)) . "\n";
if (($fp = @fopen($this->logFile, 'a')) === false) { if (($fp = @fopen($this->logFile, 'a')) === false) {
throw new InvalidConfigException("Unable to append to log file: {$this->logFile}"); throw new InvalidConfigException("Unable to append to log file: {$this->logFile}");

View File

@ -10,6 +10,7 @@ namespace yiiunit\framework\log;
use Yii; use Yii;
use yii\helpers\FileHelper; use yii\helpers\FileHelper;
use yii\log\Dispatcher; use yii\log\Dispatcher;
use yii\log\FileTarget;
use yii\log\Logger; use yii\log\Logger;
use yiiunit\TestCase; use yiiunit\TestCase;
@ -32,6 +33,22 @@ class FileTargetTest extends TestCase
]; ];
} }
/**
* @test
*/
public function testInit()
{
$logFile = Yii::getAlias('@yiiunit/runtime/log/filetargettest.log');
FileHelper::removeDirectory(dirname($logFile));
new FileTarget([
'logFile' => Yii::getAlias('@yiiunit/runtime/log/filetargettest.log'),
]);
$this->assertFileNotExists(
dirname($logFile),
'Log directory should not be created during init process'
);
}
/** /**
* @dataProvider booleanDataProvider * @dataProvider booleanDataProvider
* @param bool $rotateByCopy * @param bool $rotateByCopy