Skip to content

Commit 674d1bb

Browse files
authored
Merge pull request #1 from shadowhand/fix/better-logger
Improve logger forwarding
2 parents 50b1693 + 67216a4 commit 674d1bb

File tree

2 files changed

+39
-8
lines changed

2 files changed

+39
-8
lines changed

src/Writer/LoggerWriter.php

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
use Knotlog\Log;
88
use Psr\Log\LoggerInterface;
9+
use Stringable;
10+
11+
use function is_string;
912

1013
final readonly class LoggerWriter implements LogWriter
1114
{
@@ -21,9 +24,37 @@ public function write(Log $log): void
2124
$context = $log->all();
2225

2326
if ($log->hasError()) {
24-
$this->logger->error('{' . $this->errorKey . '}', $context);
27+
$this->logger->error($this->getError($context), $context);
2528
} else {
26-
$this->logger->info('{' . $this->messageKey . '}', $context);
29+
$this->logger->info($this->getInfo($context), $context);
2730
}
2831
}
32+
33+
/**
34+
* @param array<string, mixed> $context
35+
*/
36+
private function getError(array $context): string|Stringable
37+
{
38+
$message = $context[$this->errorKey] ?? null;
39+
40+
if (is_string($message) || $message instanceof Stringable) {
41+
return $message;
42+
}
43+
44+
return 'Knotlog error';
45+
}
46+
47+
/**
48+
* @param array<string, mixed> $context
49+
*/
50+
private function getInfo(array $context): string|Stringable
51+
{
52+
$message = $context[$this->messageKey] ?? null;
53+
54+
if (is_string($message) || $message instanceof Stringable) {
55+
return $message;
56+
}
57+
58+
return 'Knotlog entry';
59+
}
2960
}

tests/Writer/LoggerWriterTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public function it_writes_to_info_level_for_non_error_logs(): void
2525

2626
$logger->expects($this->once())
2727
->method('info')
28-
->with('{message}', ['message' => 'test', 'user_id' => 123]);
28+
->with('test', ['message' => 'test', 'user_id' => 123]);
2929

3030
$logger->expects($this->never())
3131
->method('error');
@@ -45,7 +45,7 @@ public function it_writes_to_error_level_for_error_logs(): void
4545

4646
$logger->expects($this->once())
4747
->method('error')
48-
->with('{error}', ['error' => 'Something went wrong', 'user_id' => 123]);
48+
->with('Something went wrong', ['error' => 'Something went wrong', 'user_id' => 123]);
4949

5050
$logger->expects($this->never())
5151
->method('info');
@@ -65,7 +65,7 @@ public function it_writes_to_error_level_for_exception_logs(): void
6565

6666
$logger->expects($this->once())
6767
->method('error')
68-
->with('{error}', ['exception' => 'RuntimeException', 'user_id' => 123]);
68+
->with('Knotlog error', ['exception' => 'RuntimeException', 'user_id' => 123]);
6969

7070
$logger->expects($this->never())
7171
->method('info');
@@ -85,7 +85,7 @@ public function it_uses_custom_message_key(): void
8585

8686
$logger->expects($this->once())
8787
->method('info')
88-
->with('{msg}', ['msg' => 'custom message', 'user_id' => 123]);
88+
->with('custom message', ['msg' => 'custom message', 'user_id' => 123]);
8989

9090
$writer = new LoggerWriter($logger, messageKey: 'msg');
9191
$writer->write($log);
@@ -102,7 +102,7 @@ public function it_uses_custom_error_key(): void
102102

103103
$logger->expects($this->once())
104104
->method('error')
105-
->with('{err}', ['error' => 'Something went wrong', 'err' => 'custom error']);
105+
->with('custom error', ['error' => 'Something went wrong', 'err' => 'custom error']);
106106

107107
$writer = new LoggerWriter($logger, errorKey: 'err');
108108
$writer->write($log);
@@ -128,7 +128,7 @@ public function it_passes_entire_log_context_to_logger(): void
128128

129129
$logger->expects($this->once())
130130
->method('info')
131-
->with('{message}', $expectedContext);
131+
->with('Knotlog entry', $expectedContext);
132132

133133
$writer = new LoggerWriter($logger);
134134
$writer->write($log);

0 commit comments

Comments
 (0)