$container['logger'] = function (\Slim\Container $c) {
$settings = $c->get('settings')['logger'];
$logger = new Monolog\Logger($settings['name']);
$logger->pushProcessor(new Monolog\Processor\UidProcessor());
$logger->pushHandler(new Monolog\Handler\StreamHandler($settings['path'], $settings['level']));
return $logger;
};
$container['errorHandler'] = function (\Slim\Container $container) {
return function (\Slim\Http\Request $request, \Slim\Http\Response $response, \Exception $exception) use ($container) {
/** @var \Monolog\Logger $monoLog */
$monoLog = $container->logger;
$monoLog->addError((string)$exception);
$response->getBody()->rewind();
return $response->withStatus(500)
->withHeader('Content-Type', 'text/html')
->write("Oops, something's gone wrong!");
};
};
$container['phpErrorHandler'] = function ($container) {
return $container['errorHandler'];
};
これまでに例外が発生した場合、エラーログには1行しか表示されません。多分、私の記憶は曖昧になっているかもしれませんが、デフォルトのPHPエラーログは、複数の行にうまく書式を設定します...Slim 3のMonologを使用して、適切な改行で例外を記録するにはどうすればよいですか?
それをきれいにフォーマットする方法はありますか?または、次のような形式で手動で書式設定してください:
$monoLog->addError($exception->getMessage());
$monoLog->addError($exception->getTraceAsString());
$monoLog->addError($exception->getFile());
$monoLog->addError($exception->getCode());
$monoLog->addError($exception->getLine());
上記の場合でも、トレースは1行で表示されます。ここで