-
Notifications
You must be signed in to change notification settings - Fork 0
Logování komunikace a chybových hlášek
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.
}