Silex:记录dbal异常

时间:2015-07-28 13:49:02

标签: exception logging console silex dbal

我正在使用Silex微框架。我搜索了一个方法来记录每个dbal异常(来自请求,控制台命令等......)

我找不到有用的东西。即使我在$app->error();中声明了一个回调函数,它也不适用于控制台异常

如何告诉dbal登录文件所有数据库错误/异常?

1 个答案:

答案 0 :(得分:1)

如果你有胖版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()));
}