正如我遵循的代碼,實際上沒有這樣的選項來啓用記錄的命令。在app/console
是這樣的代碼:
use Symfony\Bundle\FrameworkBundle\Console\Application;
...
$application = new Application($kernel);
$application->run();
它調用Symfony\Component\Console\Application::run()
其中有try/catch塊。在異常方法renderException()
被調用,但沒有記錄發生在任何地方。
另請注意,app/console
始終默認退出,出現錯誤代碼時出現異常。
您可以創建自己的Application
類延伸Symfony\Bundle\FrameworkBundle\Console\Application
並修改app/console
以使用它。比你可以重寫run()
方法並添加錯誤記錄。
或者你也可以只修改app/console
和處理誤差修改是這樣的:
// $application->run();
$application->setCatchExceptions(false);
try {
$output = new Symfony\Component\Console\Output\ConsoleOutput();
$application->run(null, $output);
} catch (Exception $e) {
... error logging ...
$application->renderException($e, $output);
$statusCode = $e->getCode();
$statusCode = is_numeric($statusCode) && $statusCode ? $statusCode : 1;
exit($statusCode);
}
感謝您的解釋。我深入瞭解啓動文件console&index.php,但應深入研究Application類。 但似乎應用程序類的Web控制檯和共享相同的行爲。 – Sawered 2012-02-16 09:43:33