Nette:Debug – nastavení zobrazení

- Tomas
 - Člen | 3
 
Zdravím,
provizorně jsem nasadil Debug na starší aplikaci která není napsána
v Nette.
Můj „problém“:
pokud jsem to dobře pochopil, tak Debug v produkčním prostředí
(Debug::enable(TRUE);) zapisuje chyb do souboru, ale k uživateli
se vrátí pouze prázdná stránka. Jde Debug nějak přimět k tomu, aby po
zalogování chyby zavolal nějakou metodu, nebo případně poslal na výstup
HTML soubor aby návštěvník nemusel koukat na prázdnou stránku?
Díky za všechny odpovědi
T.

- Tomas
 - Člen | 3
 
Děkuju za nápad, bohužel nefunguje.
Pokud vytvořím chybu:
# index.php
<?php
require_once 'loader.php';
Debug::enable(Debug::PRODUCTION);
try {
  require_once 'class_with_Bug.php';
  Bug::Vypis();
} catch (Exception $e) {
  echo 'Máš tam chybu, voe!';
  Debug::processException($e);
}
#class_with_Bug.php
<?php
class Bug {
  private static function Vypis() {
    echo 'Chráněná metoda :)';
  }
}
tak se stejně objeví jenom prázdná stránka :(

- Ondřej Mirtes
 - Člen | 1536
 
Nevím, který level chyby se vyhodí, pokud přistupuješ k zapouzdřené metodě, ale Laděnka potřebuje být pro zachycování Parse/Fatal errorů includována v jiném souboru, než ve kterém se ta chyba děje. Takže includování loader.php vystrč ještě mimo ten soubor, který chybu vyvolává :)

- kravčo
 - Člen | 721
 
Tomas napsal(a):
… tak se stejně objeví jenom prázdná stránka :(
Lepšie na prvotné testovanie bude asi vyhodenie výnimky:
// ...
try {
    throw new Exception;
} catch (Exception $e) {
    echo 'Máš tam chybu, voe!';
    Debug::processException($e);
}
// ...
Ak ani toto nepomôže, skontroloval by som ešte output buffering…

- _Martin_
 - Generous Backer | 679
 
Tomas napsal(a):
Děkuju za nápad, bohužel nefunguje.
Jak jsem říkal, tímhle způsobem jde zachytávat jen výjimky. Fatální chyby takto zachytit nejde. Což by vadit nemělo, předpokládám, že není velká pravděpodobnost, aby u aplikace na ostrém serveru docházelo opakovaně k fatálním chybám.

- David Grudl
 - Nette Core | 8285
 
Přidal jsem Debug::$onFatalError
function myErrorHandler()
{
	// zobrazi nejakou stranku
	require dirname(__FILE__) . '/error.php'; // cesta ke skriptu MUSI BYT ABSOLUTNI!
}
Debug::enable();
Debug::$onFatalError[] = 'myErrorHandler';