diff options
| author | Asko Nõmm <asko@nth.ee> | 2024-11-15 17:36:55 +0200 |
|---|---|---|
| committer | Asko Nõmm <asko@nth.ee> | 2024-11-15 17:36:55 +0200 |
| commit | c6221eb4fe29ddf8a09f7fdb4277758716269bd6 (patch) | |
| tree | 409484067297ec4639acc824faef0870aa31f3a4 | |
| parent | 086d719dc61d2c531e0b9fa51678b8e2f34dafdb (diff) | |
Improve tests.
| -rw-r--r-- | src/Format.php | 8 | ||||
| -rw-r--r-- | src/Loggr.php | 12 | ||||
| -rw-r--r-- | tests/FormatTest.php | 15 |
3 files changed, 33 insertions, 2 deletions
diff --git a/src/Format.php b/src/Format.php index 4517e0a..fa1c215 100644 --- a/src/Format.php +++ b/src/Format.php @@ -43,7 +43,7 @@ enum Format /** @var string $trace_line */ $trace_line = $message->trace['line']; - return json_encode([ + $json = json_encode([ 'date' => $dateTime->format('Y-m-d H:i:s'), 'level' => strtoupper($message->level->value), 'message' => $message->content, @@ -53,6 +53,12 @@ enum Format 'line' => $trace_line, ], ]); + + if (!$json) { + return ''; + } + + return $json; } /** diff --git a/src/Loggr.php b/src/Loggr.php index 78b3504..82d5681 100644 --- a/src/Loggr.php +++ b/src/Loggr.php @@ -159,8 +159,18 @@ class Loggr implements LoggerInterface $this->write(Level::Debug, $message, $context); } - public function log(mixed $level, \Stringable|string $message, array $context = []): void + /** + * Logs a message with the specified level and context. + * + * @param mixed $level The logging level (e.g., error, info, debug). + * @param \Stringable|string $message The message to log. + * @param mixed $context Optional context information to include in the log. + * @return void + */ + public function log(mixed $level, \Stringable|string $message, mixed $context = null): void { + if (!is_string($level) && !is_int($level)) return; + $this->trace = debug_backtrace()[0]; $this->write(Level::from($level), $message, $context); } diff --git a/tests/FormatTest.php b/tests/FormatTest.php index 06f30a3..4d9dde0 100644 --- a/tests/FormatTest.php +++ b/tests/FormatTest.php @@ -43,6 +43,21 @@ class FormatTest extends MockeryTestCase $this->assertEquals($expectedJson, $serializedMessage); } + public function testJsonFails(): void + { + $message = new Message( + level: Level::Info, + trace: debug_backtrace()[0], + context: NAN, + ); + + $format = Format::JSON; + $serializedMessage = $format->serialize($message); + $expectedJson = ''; + + $this->assertEquals($expectedJson, $serializedMessage); + } + public function testIntelliJ(): void { $message = new Message( |
