Rozšíření Debuggeru – vlastní akce před zalogováním chyby
- Extraneus
- Člen | 5
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čí.
- Extraneus
- Člen | 5
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
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
@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)