Om ett undantag inte skrivs till filen exception.log med undantagsmodellen som kontext, känns det inte igen och analyseras korrekt i New Relic eller andra PSR-3 monolog-kompatibla logglager. Loggning av endast en del av undantaget (eller loggning av det till fel fil) leder till produktionsfel när undantag förbises.
Korrigera undantagshantering
I följande checklista finns exempel som visar hur du hanterar undantag korrekt.
Skriv till undantagsloggen
Skriv till undantagsloggen med följande mönster, oavsett ytterligare åtgärder, såvida det inte finns någon tvingande anledning att inte göra det.
Detta arbetssätt sparar automatiskt $e->getMessage i loggmeddelandet och objektet $e i kontexten, enligt PSR-3-kontextstandarden. Detta görs i \Magento\Framework\Logger\Monolog::addRecord.
Stäng av signaler
Stäng av signaler genom att inte logga undantag som ingår i det avsedda operationsflödet. Ingen uppföljningsåtgärd krävs när undantaget påträffas, så det behöver inte loggas och analyseras när det inträffar. Lägg till en kommentar som anger orsaken till att signalerna hörs och att det är avsiktligt. Kombinera med phpcs:ignore.
I följande exempel visas felaktig undantagshantering.
Logic före loggning
Logik före loggning kan leda till ett annat undantag eller ett allvarligt fel, som förhindrar att undantaget loggas och bör ersättas med korrekt exempel.
Den här metoden infogar radbrytningar i meddelandet, som inte är kompatibelt med PSR-3. Undantaget, inklusive stackspårning, måste vara en del av meddelandekontexten för att säkerställa att den sparas korrekt med meddelandet i New Relic eller annan PSR-3-monologgkompatibel logglagring.
Undantaget nedgraderas till ett fel, som inte tillåter att ett objekt skickas, utan bara en sträng, alltså getMessage(). Detta gör att spårningen går förlorad och bör ersättas med rätt exempel som visas i Skriv till undantagsloggen eller Nedgradera undantag.
I stället för att skicka objektet $e skickas bara $e->getMessage(). Detta gör att spårningen går förlorad och bör ersättas med de korrekta exemplen som visas i Skriv till undantagsloggen eller Nedgraderingsundantag.
Om du utelämnar raden phpcs:ignore utlöses en varning i PHPCS och din CI ska inte skickas. Detta bör ersättas med rätt exempel som visas i ljudsignaler.