Page tree
Skip to end of metadata
Go to start of metadata

Tento článek shrnuje možnosti debuggování, profilování a logování aplikační platformy Vivo. Článek je určen nejen pro programátory, ale i pro administrátory starající se o chod hotové aplikace.

Původní autor: Mirek Hájek

Vivo od verze 1.1.2 přináší vylepšenou podporu pro debugging, profilování, logování a reporting aktuálně vzniklých chyb. První zmíněné oceníte především při vývoji a údržbě aplikace. Logování a okamžité reportování nastalých výjimek mailem oceníte při samotném provozu na produkčních serverech.

Pro účely debuggingu byl přepracován systém zápisu informací do konzole za použití protokolu addonu FirePHP pro prohlížeč Mozilla Firefox. Vivo podle nastavené úrovně přehledně zobrazuje jednotlivé typy logu za použití zvýraznění.

  • Časové údaje poskytují informaci o délce zpracování jednotlivých částí kódu.
  • Informace jsou zobrazeny VŽDY, i když zpracování požadavku končí Fatal Errorem – napomáhá k okamžitému odhalení chyby bez nutnosti připojení na server a čtení logů.
  • Díky novému protokolu je výsledný HTML kód vždy validní.

Jak používat

  • Nainstalujte si FirePHP do prohlížeče.
  • Nastavte úroveň logování v souboru init.php v App CMS např.

    Vivo::$logger->level = Vivo\Logger::LEVEL_FINEST; # framework
    CMS::$logger->level = Vivo\Logger::LEVEL_FINEST; # pro CMS může být potřeba ještě doplnit CMS::$logger ;) 
  • Zapište do adresního řádku parametr vivo:print_log=1 (např. http://mojesite.cms-latest.vivo/cs/?vivo:print_log=1). Informace o zapnutém výpisu informací do konzole se ukládá do SESSION, takže lze pohodlně procházet web bez nutnosti opětovného zápisu.
  • Vypnutí se provádí zápisem parametru vivo:print_log=0, popřípadě vivo:print_log=.

Starý systém logování pomocí JavaScriptu je funkční. Pro zapnutí starého formátu stačí postupovat stejně s vypnutou funkcí addonu FirePHP.

 FirePHP

Příklad použití v PHP kódu

try {
	$this->client = new Client();
}
catch (Client\IOException $e) {
	\Vivo::$logger->error(__METHOD__.' Při připojení nastala chyba. '.$e->getMessage());
}

Zobrazení fatal erroru v HTML

Ve vývojovém prostředí je výhodné mít zapnuté zobrazení chyb. To se provádí na úrovni konfigurace v souboru php.ini, nebo dodatečným použitím php funkce například v initu CMS.

ini_set('display_errors', 1);

Logování

Logování informací stejně jako php log se provádí do souboru na serveru. Tyto informace jsou velice cenné při zpětné analýze problému.
Nastavení  jména souboru se provádí pomocí CMS parametru logger.log_file.

array(
	'logger.log_file' => VIVO_DIR.'/Logs/'.date('Y-m-d_H.00').'_error.log'
)

Error reporting

Po nasazení aplikace do produkčního prostředí není vyloučeno, že program nebude vykazovat drobné chyby. I když by tato situace neměla nastat, patří průběžná oprava chyb do životního cyklu každého softwaru.
K rychlému informování kompetentních osob zodpovědných za běh aplikace slouží reportování náhlých chyb pomocí emailu.
Adresa emailu se nastavuje pomocí CMS parametru logger.email.

array(
	'logger.email' => 'vivolog@company.com'
)

 

  • No labels