Best Practice pro logovani a zpracovani chyb?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Dj_Oggy
- Člen | 67
Zdravim,
koukal jsem do dokumentace a do fora, ale nenarazil jsem tu nikde na zadnou Best Practice na logovani a zpracovani chyb. Sice je v dokumentaci popsana ladenka, nejaky zapis do db nebo posilani na email. Ale nenarazil jsem treba spravne zpracovani exceptionu, nastaveni error page apod.
Jake pouzivate vy praktiky?
Dikes
- Ondřej Mirtes
- Člen | 1536
Já tedy v bootstrapu mám:
if (substr_count($_SERVER['HTTP_HOST'], 'example.com') > 0) //protože na mém hostingu selhává autodetekce
Environment::setMode(Environment::PRODUCTION);
else Environment::setMode(Environment::DEVELOPMENT);
$application = Environment::getApplication();
if (Environment::isProduction()) $application->catchExceptions = true;
$application->errorPresenter = 'Web:Error';
Debug::enable(Debug::DETECT, APP_DIR . '/logs/error.log', array(
'From' => 'nette@%host%',
'To' => 'mail@mail.cz',
'Subject' => 'Chyba na serveru %host%',
'Body' => '%date% - %message%. Pro více informací shlédněte error log.',
));
Což zajistí vše, co je potřeba. Pro zalogování výjimek v případě, že se spustí error presenter pak jeho shutdown metoda vypadá takto:
protected function shutdown($e) {
Debug::exceptionHandler($this->params['exception']); //exit called here
}