【发布时间】:2015-10-19 02:57:17
【问题描述】:
我正在使用 Silex 微框架。我搜索了一种方法来记录每个 dbal 异常(来自请求、控制台命令等)
我没有找到有效的方法。即使我在$app->error(); 中声明了一个回调函数,它对控制台异常也不起作用
我如何告诉 dbal 登录一个文件中的所有 db 错误/异常?
【问题讨论】:
标签: exception logging console silex dbal
我正在使用 Silex 微框架。我搜索了一种方法来记录每个 dbal 异常(来自请求、控制台命令等)
我没有找到有效的方法。即使我在$app->error(); 中声明了一个回调函数,它对控制台异常也不起作用
我如何告诉 dbal 登录一个文件中的所有 db 错误/异常?
【问题讨论】:
标签: exception logging console silex dbal
如果你有 Silex 的胖版本,你应该已经使用 MonologServiceProvider 进行异常日志记录,只要它已注册。
控制台通常是Symfony\Component\Console\Application 的实例(不是Silex\Application)。
编辑完成记录控制台异常的一种方法是将控制台捕获异常设置为 false:
$console->setCatchExceptions(false);
然后将 $console->run(); 包装在 try catch 中:
try {
$console->run();
}
catch(\Doctrine\DBAL\DBALException $e) {
$app['monolog']->addError(sprintf('Console DBALException %s %s %s', $e->getMessage(), $e->getTraceAsString(), $e->getFile(), $e->getLine()));
}
catch(\Exception $e) {
$app['monolog']->addError(sprintf('Console Exception %s %s %s', $e->getMessage(), $e->getTraceAsString(), $e->getFile(), $e->getLine()));
}
【讨论】: