File Log writer without newline. (#19941)

* File Log writer without newline.

* Fix minor correction.

* Fix tests.

* Add more test.

* Add line to CHANGELOG.md.
This commit is contained in:
Wilmer Arambula
2023-08-30 08:14:12 -04:00
committed by GitHub
parent a2ee22044c
commit 671fbefe84
3 changed files with 16 additions and 4 deletions

View File

@ -4,7 +4,7 @@ Yii Framework 2 Change Log
2.0.50 under development
------------------------
- no changes in this release.
- Bug #19940: File Log writer without newline (terabytesoftw)
2.0.49 August 29, 2023

View File

@ -130,12 +130,12 @@ class FileTarget extends Target
if ($this->enableRotation && @filesize($this->logFile) > $this->maxFileSize * 1024) {
$this->rotateFiles();
}
$writeResult = @fwrite($fp, $trimmedText);
$writeResult = @fwrite($fp, $text);
if ($writeResult === false) {
$error = error_get_last();
throw new LogRuntimeException("Unable to export log through file ({$this->logFile})!: {$error['message']}");
}
$textSize = strlen($trimmedText);
$textSize = strlen($text);
if ($writeResult < $textSize) {
throw new LogRuntimeException("Unable to export whole log through file ({$this->logFile})! Wrote $writeResult out of $textSize bytes.");
}

View File

@ -123,7 +123,19 @@ class FileTargetTest extends TestCase
$logger->export();
$test = file($logFile);
$this->assertEquals("xxx", $test[0]);
$this->assertEquals("xxx\n", $test[0]);
$this->clearLogFile($logFile);
$logger = new CustomLogger();
$logger->logFile = $logFile;
$logger->messages = array_fill(0, 3, 'xxx');
$logger->export();
$test = file($logFile);
$this->assertEquals("xxx\n", $test[0]);
$this->assertEquals("xxx\n", $test[1]);
$this->assertEquals("xxx\n", $test[2]);
$this->clearLogFile($logFile);