Nette:Debug a viacnasobne logovanie exceptions
- edke
- Člen | 198
Ahoj David.
Dnes sme dosli do bodu, kedy sme potrebovali pocas behu skriptu (ktory pobezi
z Cli) viacnasobne logovanie. Musel som sa trosku pohrat s
Nette\Debug
, aby som sa dopracoval k cielenemu vysledku.
- v prvom rade musim menit Debug::$time, pretoze na zaklade tejto statickej premennej (ktora sa nastavi len raz) sa tvori meno pre ukladane html z ladenky.
- druhy problem nastava pri includovani Debug.templates/bluescreen.phtml, kde sa v prvej casti skriptu inicializuju funkcie. preto tento skript som rozdelil na 2 casti, na funkcie a zbytok a funkcie includujem cez:
require_once dirname(__FILE__). '/bluescreen-functions.php';
Potom to uz bezi a mozem v skripte vyuzivat silu ladenky opakovane podla potreby:
try {
...
} catch (Exception $e) {
Debug::$time= microtime(true);
Debug::exceptionHandler($e);
}
...
Je jasne ze Nette\Debug bola navrhnuta tak, aby sa po exception beh skriptu zastavil. Ale su situacie, kedy si iste casti bloku chceme osetrit cez try/catch a nie kazdy throw exception musi zakonite skoncit ukoncenim skriptu.
Na druhej strane chceme vyuzivat silu „ladenky“ a mat k dispozicii jej prehladny vystup, hlavne v log adresari na production servri.
Preto sa chcem spytat, ci by to nestalo za implementovanie, aby bola moznost nastavit Nette\Debug na opatovne logovanie a generovanie html exceptions v pripade, ze je zapnute logovanie.
- phx
- Člen | 651
Pokud by se upravovala Ladenka tak bych se primlouval za dalsi upravu. Pouzivam Debug::timer() na mereni casu spracovani cele stranky, ale jakmile potrebuji nekde neco dalsiho, nebo nedej boze by to vyuzivala nejaka komponenta 3. strany tak mi to totalne naboura mereni. Neslo by pridat parametr na ‚namespace‘ mereni. Tim by si kazdy mohl merit X ruznych veci zaroven.
- David Grudl
- Nette Core | 8228
phx napsal(a):
Pokud by se upravovala Ladenka tak bych se primlouval za dalsi upravu. Pouzivam Debug::timer() na mereni casu spracovani cele stranky, ale jakmile potrebuji nekde neco dalsiho, nebo nedej boze by to vyuzivala nejaka komponenta 3. strany tak mi to totalne naboura mereni. Neslo by pridat parametr na ‚namespace‘ mereni. Tim by si kazdy mohl merit X ruznych veci zaroven.
přidáno
- David Grudl
- Nette Core | 8228
edke napsal(a):
2. druhy problem nastava pri includovani Debug.templates/bluescreen.phtml, kde sa v prvej casti skriptu inicializuju funkcie. preto tento skript som rozdelil na 2 casti, na funkcie a zbytok a funkcie includujem cez:
Ok, upravim bluescreen.phtml.
Je jasne ze Nette\Debug bola navrhnuta tak, aby sa po exception beh skriptu zastavil. Ale su situacie, kedy si iste casti bloku chceme osetrit cez try/catch a nie kazdy throw exception musi zakonite skoncit ukoncenim skriptu.
Plánuju přidat metodu processException, která by to měla řešit, ale není stále implementace dokonalá – takže časem.
- David Grudl
- Nette Core | 8228
Právě jsem nahrál novou verzi Nette\Debug
. Ta by měla
řešit zmíněné záležitosti, navíc přidává metodu
Debug::processException($exception)
, která má za úkol
zobrazit/zalogovat výjimku a předat řízení zpět aplikaci (narozdíl od
Debug::exceptionHandler()
).
Proměnnou Debug::$html
jsem nahradil srozumitelnější
Debug::$consoleMode
.
- Jan Tvrdík
- Nette guru | 2595
Nebylo by možné naučit Nette\Debug vkládat do emailu zprávu vyjímky? Představoval bych si to jako další
proměnnou vedle %host%
a %date%
.