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
+
0
-

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.

darthcz
Člen | 113
+
0
-

Tak pokud přepnu na produkční mód a zachycenou výjimku zpracuji pomocí Debug::log, tak se vytvoří log a monitor soubor s nápisem sent. Avšak mail nedorazí :( Nechápu proč.

A taky mě štve, že se nelogují výjimky v development modu. Jde to nějak udělat?

Aurielle
Člen | 1281
+
0
-

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);
};
darthcz
Člen | 113
+
0
-

Děkuji.

Nevíte ještě proč se neodesílají emaily?

roarbb
Člen | 29
+
0
-

To by zaujimalo aj mna. V Bootstrape mam:

<?php
NDebug::enable(NDebug::DETECT, APP_DIR . '/../log', 'moj@mail.com');
?>

Pouzivam Nette 2.0 Alpha 2
Dakujem.