Skip to content

Commit 91d7ad3

Browse files
committed
Fix logger that wasn't able to log \Throwable
1 parent 49836a9 commit 91d7ad3

File tree

2 files changed

+69
-4
lines changed

2 files changed

+69
-4
lines changed

src/Logger/Console.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,11 @@ private function format(string $level, string $message, array $context): string
103103

104104
/**
105105
* Format an exception
106-
* @param \Exception $e
106+
* @param \Throwable $e
107107
* @param string $newLine Optionnal new line char
108108
* @return string
109109
*/
110-
protected function formatException(\Exception $e, $newLine = PHP_EOL)
110+
protected function formatException(\Throwable $e, $newLine = PHP_EOL): string
111111
{
112112
$message = '';
113113

@@ -130,11 +130,11 @@ protected function formatException(\Exception $e, $newLine = PHP_EOL)
130130
/**
131131
* Format an exception as string
132132
*
133-
* @param \Exception $e
133+
* @param \Throwable $e
134134
* @param string $newLine
135135
* @return string
136136
*/
137-
protected function _formatException(\Exception $e, string $newLine = PHP_EOL): string
137+
protected function _formatException(\Throwable $e, string $newLine = PHP_EOL): string
138138
{
139139
return get_class($e) . ': ' . $e->getMessage() . $newLine . '#> ' . $e->getFile() . '(' . $e->getLine() . ')' . $newLine . $e->getTraceAsString();
140140
}

tests/Logger/ConsoleTest.php

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
/**
4+
* MIT License
5+
*
6+
* Copyright (c) 2018 Samuel CHEMLA
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy
9+
* of this software and associated documentation files (the "Software"), to deal
10+
* in the Software without restriction, including without limitation the rights
11+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12+
* copies of the Software, and to permit persons to whom the Software is
13+
* furnished to do so, subject to the following conditions:
14+
*
15+
* The above copyright notice and this permission notice shall be included in all
16+
* copies or substantial portions of the Software.
17+
*
18+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24+
* SOFTWARE.
25+
*/
26+
27+
namespace PhpBg\MiniHttpd\Tests\Logger;
28+
29+
use PhpBg\MiniHttpd\Logger\Console;
30+
use PHPUnit\Framework\TestCase;
31+
use Psr\Log\LogLevel;
32+
33+
class ConsoleTest extends TestCase
34+
{
35+
public function testLogException() {
36+
$output = fopen('php://memory', 'w+');
37+
$logger = new Console(LogLevel::DEBUG, $output);
38+
39+
$logger->error("foo", ['exception' => new \Exception("bar")]);
40+
41+
rewind($output);
42+
$this->assertNotEmpty(stream_get_contents($output));
43+
}
44+
45+
public function testLogExceptionWithPrevious() {
46+
$output = fopen('php://memory', 'w+');
47+
$logger = new Console(LogLevel::DEBUG, $output);
48+
49+
$logger->error("foo", ['exception' => new \Exception("bar", 0, new \Exception("baz"))]);
50+
51+
rewind($output);
52+
$this->assertNotEmpty(stream_get_contents($output));
53+
}
54+
55+
public function testLogError() {
56+
$output = fopen('php://memory', 'w+');
57+
$logger = new Console(LogLevel::DEBUG, $output);
58+
59+
$logger->error("foo", ['exception' => new \Error("bar")]);
60+
61+
rewind($output);
62+
$this->assertNotEmpty(stream_get_contents($output));
63+
}
64+
65+
}

0 commit comments

Comments
 (0)