Rozšíření Debuggeru – vlastní akce před zalogováním chyby

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

Potřeboval bych poradit – mám aplikaci, která využívá standartní Nette Sandbox (2.0.11) a potřeboval bych provést určitou akci ještě před tím než Nette Debugger něco zobrazí popř. zaloguje (ať už jde o Exception, Error nebo třeba info zaslané před Debugger::log).

Jako první mě napadlo udělat extend Debuggeru s tím, že bych si upravil metodu log… to ovšem nejde protože Debugger je final class…

Pak jsem zkusil použít vlastní Logger, ten se ale použije jen v produkčním režimu…

Neznáte někdo nějaké pěkné elegantní řešení tohoto problému? :) Škoda že Laděnka nemá nějaký callback pro všechny události – bohužel onFatalError mi pro mé potřeby nestačí.

jiri.pudil
Nette Blogger | 1032
+
0
-

Zkus Nette\Application\Application::$onError

Extraneus
Člen | 5
+
0
-

jiri.pudil napsal(a):

Zkus Nette\Application\Application::$onError

Díky to vypadá jako částečné řešení mého problému, ale ještě bych potřeboval nějak pořešit abych mel moznost zachytit to co je zalogovano pomoci Debugger::log. Proto by byl idealni extend Debbugeru samotneho :)

Milo
Nette Core | 1283
+
0
-


Debugger::log() loguje pomocí Debugger::$logger. Tam si strč vlastní logger, třeba rozšířený Nette\Diagnostics\Logger, viz. potřebné metody.

Editoval Milo (26. 8. 2013 18:49)

enumag
Člen | 2118
+
0
-

@Milo: To jsem už psal taky a pak jsem to smazal. Píše že vlastní Logger zkusil, problém je že metoda Debugger::log() která volá Logger se nevolá v dev režimu.

@Extraneus: Tzn. I kdyby ta třída nebyla final, přepsání metody log by ti vůbec nepomohlo. Správné řešení je nastavit si vlastní error handler, exception handler a shutdown function.

Editoval enumag (26. 8. 2013 18:26)

Milo
Nette Core | 1283
+
0
-

Aha. Měl jsem si to přečíst pořádně :-(