Nefunkční logování výjimek
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- darthcz
- Člen | 113
Dobrý den,
chtěl bych se zeptat, jak přesně lze docílit logování zachycených i nezachycených výjimek.
Zkoušel jsem do bootstrapu vložit toto (development je u enable protože jsem chtěl vyzkoušet logování již na local serveru):
$emailHeaders = array(
'From' => 'mail@mail.cz',
'To' => 'mail@mail.cz',
'Subject' => 'Chyba na serveru %host%',
'Body' => '%date% - %message%. Pro více informací shlédněte error log.',
);
//zapneme logovani se zasilanim chyb na mail
Debug::enable(Debug::DEVELOPMENT, APP_DIR . '/log/error.log', $emailHeaders);
Výjimky mám klasicky takto:
catch (ErrorException $e){
$form->addError($e->getMessage());
}
Bohužel do adresáře log se nic nezapíše, nevyhodí chybu ani nezašle
email.
Zkoušel jsem i Debug::log, ale tam se mi vyhazuje notice s tím, že
error_log filename empty.
Nevíte, jak na to? Adresář log má pro jistotu práva 777.
- Aurielle
- Člen | 1281
Logování výjímek v Dev módu můžeš udělat navěšením vlastní funkce na Application::$onError, třeba takto:
$application->onError[] = function($sender, $exception) {
if(!($exception instanceof Nette\Application\BadRequestException))
Nette\Debug::log($exception, Nette\Debug::ERROR);
};