email-sent – úroveň chyby

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Kajda23
Člen | 42
+
0
-

Ahoj,
řeším problém se zasíláním emailu o chybě v Tracy na produkci. Nikde jsem o něčem takovém nic nedohledal.

Jde o to, že email zasílá i např. noticka DEPRECATED. Ze své aplikace se snažím samozřejmě vymýtit veškeré chyby včetně notice, ale mám tam i knihovnu třetí strany (mPDF), která je generuje. Není v mých silách knihovnu 3. strany opravovat. Jenže: pokud mi mPDF pošle email, vytvoří se email-sent a další už nedojde. Chybu z mPDF lze snadno ignorovat a je generována často, takže nelze pokaždé mazat email-sent. Problém ale pak nastane, pokud se opravdu něco stane (nějaká 500), protože se to nedozvím.

Otázka zní: lze nastavit úroveň chyby, která se má zasílat emailovou notifikací (a ty ostatní ignorovat)?

Pavel Kravčík
Člen | 1195
+
0
-

Uprav si obsluhu těch výjimek a prostě jí neloguj. :)

https://github.com/…resenter.php#L30

CZechBoY
Člen | 3608
+
0
-

Nebo si knihovnu forknout, poslat pull request atd.

Kajda23
Člen | 42
+
0
-

Z odpovědí soudím, že to nejde. O úpravu se pokusit můžu, ale dosud jsem nenašel sebevědomí se svými skromnými schopnostmi zasahovat do takového parádního díla :-)

Jan Tvrdík
Nette guru | 2595
+
0
-

@Kajda23 Můžeš si napsat vlastní error handler, co bude deprecated chyby z mPDF ignorovat. Anebo si sniž error reporting okolo volání mPDF

error_reporting(E_ALL & ~E_DEPRECATED);
$mpdf->toStuff();
error_reporting(E_ALL);
Pavel Kravčík
Člen | 1195
+
0
-

Však to zvládneš. Vyvolej výjimku. V tom ErrorPresenteru si udělej dump+die, co Ti tam přijde. A přidej si tam:

	if(co prišlo == co nechci logovat)
	{
		file_put_contents('nette-safe-stream://log/soft_errors.log');
		return NULL;
	}

	$this->log(); //tohle se v tom případě neprovede a nepošle to mail