For some reason I cannot fathom the json output from exception errorHandler is not logged to http.log in the code below. The json output for notFoundHandler however is logged as expected. Is this a known problem with Slim?
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require 'autoload.php';
$config['displayErrorDetails'] = true;
$config['addContentLengthHeader'] = false;
$app = new \Slim\App(["settings" => $config]);
$c = $app->getContainer();
$c['logger'] = function($c) {
$logger = new \Monolog\Logger('slim-app');
$file_handler = new \Monolog\Handler\StreamHandler('http.log');
$logger->pushHandler($file_handler);
return $logger;
};
$app->add(function ($request, $response, $next) {
$req = $request->getMethod() . ' ' . $request->getUri() . '" ' .
$request->getBody();
$response = $next($request, $response);
$this->logger->debug($req . ' ' . $response->getBody());
return $response;
});
$c['notFoundHandler'] = function ($c) {
return function ($request, $response) use ($c) {
$r['error']['type'] = 'page_not_found';
$r['error']['message'] = 'Page not found';
return $c['response']->withJson($r, 404);
};
};
$c['errorHandler'] = function ($c) {
return function ($request, $response, $e) use ($c) {
$r['error']['type'] = 'exception';
$r['error']['message'] = $e->getMessage();
return $c['response']->withJson($r, 500);
};
};
$app->get('/test', function($req, $res) {
throw new \Exception('test exception');
});
$app->run();
?>