Exceptions: Log previous exception
This commit is contained in:
parent
e74eb6eee4
commit
2be3e17db7
|
@ -8,6 +8,7 @@ use Exception;
|
|||
use Illuminate\Database\Capsule\Manager as CapsuleManager;
|
||||
use Illuminate\Database\Connection as DatabaseConnection;
|
||||
use PDOException;
|
||||
use Throwable;
|
||||
|
||||
class DatabaseServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
@ -38,7 +39,7 @@ class DatabaseServiceProvider extends ServiceProvider
|
|||
try {
|
||||
$pdo = $capsule->getConnection()->getPdo();
|
||||
} catch (PDOException $e) {
|
||||
$this->exitOnError();
|
||||
$this->exitOnError($e);
|
||||
}
|
||||
|
||||
$this->app->instance(CapsuleManager::class, $capsule);
|
||||
|
@ -56,10 +57,12 @@ class DatabaseServiceProvider extends ServiceProvider
|
|||
}
|
||||
|
||||
/**
|
||||
* @param Throwable $exception
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function exitOnError()
|
||||
protected function exitOnError(Throwable $exception)
|
||||
{
|
||||
throw new Exception('Error: Unable to connect to database');
|
||||
throw new Exception('Error: Unable to connect to database', 0, $exception);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,12 +25,14 @@ class Legacy implements HandlerInterface
|
|||
*/
|
||||
public function report(Throwable $e)
|
||||
{
|
||||
$previous = $e->getPrevious();
|
||||
error_log(sprintf(
|
||||
'Exception: Code: %s, Message: %s, File: %s:%u, Trace: %s',
|
||||
'Exception: Code: %s, Message: %s, File: %s:%u, Previous: %s, Trace: %s',
|
||||
$e->getCode(),
|
||||
$e->getMessage(),
|
||||
$this->stripBasePath($e->getFile()),
|
||||
$e->getLine(),
|
||||
$previous ? $previous->getMessage() : 'None',
|
||||
json_encode($e->getTrace())
|
||||
));
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ class LegacyTest extends TestCase
|
|||
$exception = new Exception('Lorem Ipsum', 4242);
|
||||
$line = __LINE__ - 1;
|
||||
$exception2 = new Exception('Test Exception');
|
||||
$exception3 = new Exception('Mor Exceptions!');
|
||||
$exception3 = new Exception('Moar Exceptions!', 42, new Exception('Another Exception'));
|
||||
$logger = new TestLogger();
|
||||
$logger2 = $this->createMock(TestLogger::class);
|
||||
$logger2->expects($this->once())
|
||||
|
@ -66,6 +66,9 @@ class LegacyTest extends TestCase
|
|||
$this->assertStringContainsString((string)$line, $logContent);
|
||||
$this->assertStringContainsString(__FUNCTION__, $logContent);
|
||||
$this->assertStringContainsString(json_encode(__CLASS__), $logContent);
|
||||
$this->assertStringContainsString('Test Exception', $logContent);
|
||||
$this->assertStringContainsString('Moar Exceptions!', $logContent);
|
||||
$this->assertStringContainsString('Another Exception', $logContent);
|
||||
|
||||
$this->assertTrue($logger->hasRecordThatPasses(function (array $record) use ($exception2) {
|
||||
$context = $record['context'];
|
||||
|
|
Loading…
Reference in New Issue