Udalosti a logovanie
Každá požiadavka, ktorú klient pošle do Google, spustí práve jednu udalosť životného cyklu, na ktorú sa môžete napojiť kvôli logovaniu, metrikám či upozorneniam: PlacesResponseReceived pri odpovedi, PlacesRequestFailed pri chybe alebo nedostupnom API. Ani jedna udalosť nenesie API kľúč:
use RoundlyConsulting\GooglePlaces\Events\PlacesRequestFailed;
use RoundlyConsulting\GooglePlaces\Events\PlacesResponseReceived;
// PlacesResponseReceived: endpoint, httpStatus, googleStatus, durationMs
// PlacesRequestFailed: endpoint, httpStatus, googleStatus, message| Udalosť | Vlastnosti | Kedy |
|---|---|---|
PlacesResponseReceived | endpoint, httpStatus, googleStatus, durationMs | Po každom zodpovedanom volaní — vrátane 404 pri detaile a ZERO_RESULTS pri geokódovaní. |
PlacesRequestFailed | endpoint, httpStatus, googleStatus, message | Keď Google vráti chybu alebo nie je dostupný; pri zlyhaní spojenia je httpStatus 0. |
endpoint je jedna z hodnôt details, autocomplete, textSearch (aj pre findPlace() a každú stránku stránkovaného vyhľadávania), nearbySearch, geocode, geocodeAddress, distance, computeMatrix, photoUri alebo photoContents (aj pre photo()->url(), contents() a save()). googleStatus je stavový reťazec Google, ak ho odpoveď obsahuje; správa o zlyhaní je začiernená. Volanie, ktoré nič neodošle, nespustí nič: výsledok z cache, photoUrl() (zostavená lokálne) a volanie odmietnuté pred odoslaním — bez nastaveného kľúča alebo pri rýchlom zlyhaní klientskeho rate limitu (RateLimitExceededException). check() výsledok vracia priamo, preto ani jeho sondy udalosti nespúšťajú.
Počúvanie udalostí
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Log;
use RoundlyConsulting\GooglePlaces\Events\PlacesRequestFailed;
use RoundlyConsulting\GooglePlaces\Events\PlacesResponseReceived;
// e.g. in AppServiceProvider::boot()
Event::listen(function (PlacesResponseReceived $event): void {
if ($event->durationMs > 2000) {
Log::warning('Slow Google call', ['endpoint' => $event->endpoint, 'ms' => $event->durationMs]);
}
});
Event::listen(function (PlacesRequestFailed $event): void {
if ($event->googleStatus === 'PERMISSION_DENIED') {
Log::critical('Google API key rejected', ['endpoint' => $event->endpoint, 'message' => $event->message]);
}
});Logovanie požiadaviek
Voliteľné logovanie každej požiadavky stojí na tých istých udalostiach. Odpovede sa logujú na úrovni info, zlyhania na úrovni warning — s endpointom, HTTP stavom, stavom Google a trvaním alebo správou. API kľúč sa nikdy nezaloguje — správa o zlyhaní sa začierni, ako opisuje Spracovanie chýb:
GOOGLE_PLACES_LOGGING=true
GOOGLE_PLACES_LOG_CHANNEL=stack # optional; defaults to the app's default channelVlastné udalosti HTTP klienta Laravelu a nástroje, ktoré ich zaznamenávajú, napríklad Telescope, vidia každú požiadavku tak, ako bola odoslaná — URL požiadavky na Geocoding API obsahuje kľúč. Tento záznam vzniká vo vašej aplikácii, mimo balíka; filtrujte ho tam.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.