diff --git a/src/Debug/Logger.php b/src/Debug/Logger.php index 32319dd..051b967 100644 --- a/src/Debug/Logger.php +++ b/src/Debug/Logger.php @@ -13,22 +13,31 @@ class Logger { use Strict; + public /*readonly*/ string $platform_version; + + public /*readonly*/ string $module_version; + private Repository\Logger $repository; - public function __construct(Repository\Logger $repository) + public function __construct(string $platform_version, string $module_version, Repository\Logger $repository) { $this->repository = $repository; + $this->platform_version = $platform_version; + $this->module_version = $module_version; } public function log(string $message, string $level = 'error'): void { - $this->repository->log($message, time(), $level); + $this->repository->log($message, time(), $level, [ + 'platform_version' => $this->platform_version, + 'module_version' => $this->module_version, + ]); } /** - * @return list + * @return list}>> */ public function getList(string $level = 'error'): array { diff --git a/src/Debug/Repository/Logger.php b/src/Debug/Repository/Logger.php index b3fe6f2..3b4ec7e 100644 --- a/src/Debug/Repository/Logger.php +++ b/src/Debug/Repository/Logger.php @@ -9,11 +9,14 @@ interface Logger { - public function log(string $message, int $created, string $level = 'error'): void; + /** + * @param array $parameters + */ + public function log(string $message, int $created, string $level = 'error', array $parameters = []): void; /** - * @return list + * @return list}>> */ public function getList(string $level = 'error'): array; } diff --git a/src/Debug/Repository/LoggerSettings.php b/src/Debug/Repository/LoggerSettings.php index 7f62e0f..61cef6e 100644 --- a/src/Debug/Repository/LoggerSettings.php +++ b/src/Debug/Repository/LoggerSettings.php @@ -32,7 +32,7 @@ public function setup(?int $limit = null): void } - public function log(string $message, int $created, string $level = 'error'): void + public function log(string $message, int $created, string $level = 'error', array $parameters = []): void { $list = $this->settings->load(self::Key . $level); @@ -44,6 +44,7 @@ public function log(string $message, int $created, string $level = 'error'): voi $list[] = [ 'message' => $message, 'created' => $created, + 'parameters' => $parameters, ]; $this->settings->set(self::Key . $level, count($list) > $this->limit ? array_slice($list, 1, $this->limit) : $list, ['type' => 'array']); @@ -61,6 +62,7 @@ public function getList(string $level = 'error'): array $output[] = [ 'message' => isset($item['message']) && is_scalar($item['message']) ? (string) $item['message'] : '', 'created' => isset($item['created']) && is_scalar($item['created']) ? (int) $item['created'] : 0, + 'parameters' => isset($item['parameters']) && is_array($item['parameters']) ? $item['parameters'] : [], ]; } diff --git a/tests/Debug/LoggerTest.phpt b/tests/Debug/LoggerTest.phpt index 63fa045..b33b726 100644 --- a/tests/Debug/LoggerTest.phpt +++ b/tests/Debug/LoggerTest.phpt @@ -20,9 +20,9 @@ class LoggerTest extends TestCase { public function testLog(): void { - $logger = new Logger($repository = Mockery::mock(Repository::class)); + $logger = new Logger('6.3.0', '1.0.0', $repository = Mockery::mock(Repository::class)); - $repository->shouldReceive('log')->with('test', Mockery::type('int'), 'level')->once(); + $repository->shouldReceive('log')->with('test', Mockery::type('int'), 'level', ['platform_version' => '6.3.0', 'module_version' => '1.0.0'])->once(); $logger->log('test', 'level'); @@ -32,16 +32,22 @@ class LoggerTest extends TestCase public function testGetList(): void { - $logger = new Logger($repository = Mockery::mock(Repository::class)); - $repository->shouldReceive('getList')->with('level')->once()->andReturn([ - ['message' => 'test1', 'created' => 5], - ['message' => 'test2', 'created' => 6] - ]); - - Assert::same([ - ['message' => 'test1', 'created' => 5], - ['message' => 'test2', 'created' => 6] - ], $logger->getList('level')); + $logger = new Logger('6.3.0', '1.0.0', $repository = Mockery::mock(Repository::class)); + $repository->shouldReceive('getList')->with('error')->once()->ordered(); + $repository->shouldReceive('getList')->with('level')->once()->ordered(); + + $logger->getList(); + $logger->getList('level'); + + Assert::true(true); + } + + public function testVersions(): void + { + $logger = new Logger('6.3.0', '1.0.0', Mockery::mock(Repository::class)); + + Assert::same('6.3.0', $logger->platform_version); + Assert::same('1.0.0', $logger->module_version); } diff --git a/tests/Debug/Repository/LoggerSettingsTest.phpt b/tests/Debug/Repository/LoggerSettingsTest.phpt index 116bcb6..fb34443 100644 --- a/tests/Debug/Repository/LoggerSettingsTest.phpt +++ b/tests/Debug/Repository/LoggerSettingsTest.phpt @@ -28,7 +28,7 @@ class LoggerSettingsTest extends TestCase $settings->shouldReceive('set')->with('static:log_level', [ ['message' => 'test1', 'created' => 5], ['message' => 'test2', 'created' => 6], - ['message' => 'test3', 'created' => 7] + ['message' => 'test3', 'created' => 7, 'parameters' => []] ], ['type' => 'array'])->once(); $repository->log('test3', 7, 'level'); @@ -49,7 +49,7 @@ class LoggerSettingsTest extends TestCase $settings->shouldReceive('set')->with('static:log_level', [ ['message' => 'test2', 'created' => 6], ['message' => 'test3', 'created' => 7], - ['message' => 'test4', 'created' => 8] + ['message' => 'test4', 'created' => 8, 'parameters' => []] ], ['type' => 'array'])->once(); $repository->log('test4', 8, 'level'); @@ -64,7 +64,7 @@ class LoggerSettingsTest extends TestCase $repository->setup(3); $settings->shouldReceive('load')->with('static:log_level')->once()->andReturnNull(); $settings->shouldReceive('set')->with('static:log_level', [ - ['message' => 'test4', 'created' => 8] + ['message' => 'test4', 'created' => 8, 'parameters' => []] ], ['type' => 'array'])->once(); $repository->log('test4', 8, 'level'); @@ -77,21 +77,21 @@ class LoggerSettingsTest extends TestCase { $repository = new LoggerSettings($settings = Mockery::mock(Settings::class)); $settings->shouldReceive('load')->with('static:log_level')->once()->andReturn([ - ['message' => 'test1', 'created' => 5], - ['message' => 'test2', 'created' => 6], - ['message' => 'test3', 'created' => 7], + ['message' => 'test1', 'created' => 5, 'parameters' => ['test1' => 'test1']], + ['message' => 'test2', 'created' => 6, 'parameters' => ['test2' => 'test2']], + ['message' => 'test3', 'created' => 7, 'parameters' => ['test3' => 'test3']], [], ['message' => []], ['created' => []] ]); Assert::same([ - ['message' => 'test1', 'created' => 5], - ['message' => 'test2', 'created' => 6], - ['message' => 'test3', 'created' => 7], - ['message' => '', 'created' => 0], - ['message' => '', 'created' => 0], - ['message' => '', 'created' => 0], + ['message' => 'test1', 'created' => 5, 'parameters' => ['test1' => 'test1']], + ['message' => 'test2', 'created' => 6, 'parameters' => ['test2' => 'test2']], + ['message' => 'test3', 'created' => 7, 'parameters' => ['test3' => 'test3']], + ['message' => '', 'created' => 0, 'parameters' => []], + ['message' => '', 'created' => 0, 'parameters' => []], + ['message' => '', 'created' => 0, 'parameters' => []], ], $repository->getList('level')); }