Skip to content

Logování komunikace a chybových hlášek

Jiří Slischka edited this page Nov 15, 2019 · 1 revision

Pokud při pokunikaci s FAPI dojde k nějaké chybě. FAPI klient může vyhodit několik z typů vyjímek. Které dědí z \Fapi\FapiClient\RuntimeException.

Tyto chyby můžeme zalogovat pomocí knihovny Tracy. Prvním krokem je inicializovat Tracy logger. První parameter se nastaví zda se jedná o produkční režim. Druhým parametrem se nastavuje ceska, kam se mají soubory s logy ukládat.

\Tracy\Debugger::enable(false, __DIR__ . '/log');

Dalším krokem je vytvořit si logger, který implementuje standard PSR-3. Protože Tracy neimplementuje standard PSR-3, máme pro to pomocnou třídu.

$logger = new \Fapi\HttpClient\Bridges\Tracy\TracyToPsrLogger(\Tracy\Debugger::getLogger());

Vytvoříme si logovacího http klienta. Kterému předáme reálného http klienta a logger. FAPI klient bude logovat každou komunikaci s FAPI serverem.

$realHttpClient = new \Fapi\HttpClient\GuzzleHttpClient();
$httpClient = new \Fapi\HttpClient\LoggingHttpClient($realHttpClient, $logger);

Vytvořeného http klienta předáme do továrničky.

$fapiClientFactory = new \Fapi\FapiClient\FapiClientFactory('http://api.fapi.loc', $httpClient);
$fapiClient = $fapiClientFactory->createFapiClient($username, $apiToken);

Ukázka zalogování chyby přihlášení.

try {
	$fapiClient->checkConnection();
} catch (\Fapi\FapiClient\AuthorizationException $authorizationException) { //nespráné přihlašovací údaje
	\Tracy\Debugger::log($authorizationException, \Tracy\Debugger::EXCEPTION);
	
	//další logika která zpracuje chybu. Například zobrazí klientovi chybovou hlášku.
}

Celá ukázka kódu:

\Tracy\Debugger::enable(true, __DIR__ . '/log');

$realHttpClient = new \Fapi\HttpClient\GuzzleHttpClient();
$logger = new \Fapi\HttpClient\Bridges\Tracy\TracyToPsrLogger(\Tracy\Debugger::getLogger());
$httpClient = new \Fapi\HttpClient\LoggingHttpClient($realHttpClient, $logger);

$fapiClientFactory = new \Fapi\FapiClient\FapiClientFactory('http://api.fapi.loc', $httpClient);
$fapiClient = $fapiClientFactory->createFapiClient($username, $apiToken);

try {
	$fapiClient->checkConnection();
} catch (\Fapi\FapiClient\AuthorizationException $authorizationException) { //nespráné přihlašovací údaje
	\Tracy\Debugger::log($authorizationException, \Tracy\Debugger::EXCEPTION);
	
	//další logika která zpracuje chybu. Například zobrazí klientovi chybovou hlášku.
}