91 lines
2.4 KiB
PHP
Executable File
91 lines
2.4 KiB
PHP
Executable File
<?php
|
|
|
|
use Katzgrau\KLogger\Logger;
|
|
use Psr\Log\LogLevel;
|
|
|
|
class LoggerTest extends PHPUnit\Framework\TestCase
|
|
{
|
|
private $logPath;
|
|
|
|
private $logger;
|
|
private $errLogger;
|
|
|
|
public function setUp()
|
|
{
|
|
$this->logPath = __DIR__.'/logs';
|
|
$this->logger = new Logger($this->logPath, LogLevel::DEBUG, array ('flushFrequency' => 1));
|
|
$this->errLogger = new Logger($this->logPath, LogLevel::ERROR, array (
|
|
'extension' => 'log',
|
|
'prefix' => 'error_',
|
|
'flushFrequency' => 1
|
|
));
|
|
}
|
|
|
|
public function testImplementsPsr3LoggerInterface()
|
|
{
|
|
$this->assertInstanceOf('Psr\Log\LoggerInterface', $this->logger);
|
|
}
|
|
|
|
public function testAcceptsExtension()
|
|
{
|
|
$this->assertStringEndsWith('.log', $this->errLogger->getLogFilePath());
|
|
}
|
|
|
|
public function testAcceptsPrefix()
|
|
{
|
|
$filename = basename($this->errLogger->getLogFilePath());
|
|
$this->assertStringStartsWith('error_', $filename);
|
|
}
|
|
|
|
public function testWritesBasicLogs()
|
|
{
|
|
$this->logger->log(LogLevel::DEBUG, 'This is a test');
|
|
$this->errLogger->log(LogLevel::ERROR, 'This is a test');
|
|
|
|
$this->assertTrue(file_exists($this->errLogger->getLogFilePath()));
|
|
$this->assertTrue(file_exists($this->logger->getLogFilePath()));
|
|
|
|
$this->assertLastLineEquals($this->logger);
|
|
$this->assertLastLineEquals($this->errLogger);
|
|
}
|
|
|
|
|
|
public function assertLastLineEquals(Logger $logr)
|
|
{
|
|
$this->assertEquals($logr->getLastLogLine(), $this->getLastLine($logr->getLogFilePath()));
|
|
}
|
|
|
|
public function assertLastLineNotEquals(Logger $logr)
|
|
{
|
|
$this->assertNotEquals($logr->getLastLogLine(), $this->getLastLine($logr->getLogFilePath()));
|
|
}
|
|
|
|
private function getLastLine($filename)
|
|
{
|
|
$size = filesize($filename);
|
|
$fp = fopen($filename, 'r');
|
|
$pos = -2; // start from second to last char
|
|
$t = ' ';
|
|
|
|
while ($t != "\n") {
|
|
fseek($fp, $pos, SEEK_END);
|
|
$t = fgetc($fp);
|
|
$pos = $pos - 1;
|
|
if ($size + $pos < -1) {
|
|
rewind($fp);
|
|
break;
|
|
}
|
|
}
|
|
|
|
$t = fgets($fp);
|
|
fclose($fp);
|
|
|
|
return trim($t);
|
|
}
|
|
|
|
public function tearDown() {
|
|
#@unlink($this->logger->getLogFilePath());
|
|
#@unlink($this->errLogger->getLogFilePath());
|
|
}
|
|
}
|