Construire votre démarrage enregistrement des erreurs

Ce que vous allez créer

Ce tutoriel fait partie de la Construire votre démarrage avec la série PHP sur Envato Tuts +. Dans cette série, je vous guide dans le lancement d’une startup du concept à la réalité en utilisant mes Planificateur de réunion application comme exemple de la vie réelle. À chaque étape du processus, je publierai le code de Meeting Planner sous forme d’exemples open source à partir desquels vous pourrez apprendre. Je traiterai également les problèmes liés au démarrage au fur et à mesure qu'ils surviennent.

Introduction à la journalisation des erreurs 

Une fois que Meeting Planner avait lancé la version alpha et que les utilisateurs commençaient à l'utiliser activement pour planifier des réunions, il se produirait des erreurs rarement signalées par les utilisateurs. Mais lors de conversations au téléphone avec des gens, ils me parlaient généralement des problèmes qu’ils rencontraient..

Dans le tutoriel d'aujourd'hui, je vais vous expliquer comment j'ai essayé deux services de journalisation basés sur le cloud, Rollbar et Sentry, et pourquoi j'ai finalement opté pour Sentry pour le moment..

Si vous n'avez pas encore essayé Meeting Planner, planifiez votre première réunion. Je participe aux commentaires ci-dessous, alors dites-moi ce que vous en pensez! Vous pouvez également me joindre sur Twitter @reifman. Je suis particulièrement intéressé si vous souhaitez suggérer de nouvelles fonctionnalités ou de nouveaux sujets pour de futurs tutoriels..

Pour rappel, tout le code pour Meeting Planner est écrit dans le framework Yii2 pour PHP. Si vous souhaitez en savoir plus sur Yii2, consultez notre série parallèle Programmer avec Yii2.

Commençons.

Mon expérience avec Rollbar

Rollbar et Sentry m'ont tous deux été recommandés par Alex Makarov, l'un des principaux développeurs bénévoles derrière le cadre Yii. Alex m'a été très utile en développant mon expertise sur Yii2 pendant que je construisais Meeting Planner et que j'écrivais sur les avantages du cadre..

Au départ, je pensais créer une connexion de base de données secondaire pour consigner mes erreurs et les suivre manuellement. Mais ensuite, j'ai remarqué que ces services fournissaient de nombreuses fonctionnalités de rapport avancées. Par exemple, ils comptent le nombre d'erreurs identiques et les signalent par gravité. À un moment donné, j'écrirai un didacticiel plus général de consignation des erreurs Yii2 pour la série de programmation Yii, mais pour l'instant, je viens de plonger dans.

Et, pendant que je maîtrisais les bases, j'utilisais des plugins Open Source Yii2 (il en existe plusieurs) pour Rollbar. J'ai commencé à avoir des erreurs de production réellement causées par les plugins.

Dans l'ensemble, j'ai été très impressionné par l'interface utilisateur et les services Web de Rollbar. Mais je crois qu'un problème avec ma configuration et l'extension open-source Yii a engendré de nouveaux problèmes.. 

En d'autres termes, les gens voyaient des erreurs de production à cause de mes tentatives d'enregistrer d'autres erreurs. Cela empirait l'impression des gens de Meeting Planner. Même si je rencontrais de nouvelles erreurs de production mystérieuses, cela me causait de la confusion et me faisait perdre mon temps..

Afin d’optimiser leur expérience et mon temps, j’ai désactivé temporairement le traitement des erreurs et décidé d’utiliser Sentry..

Soyons clairs: je pense qu’avec une meilleure extension Rollbar Yii2 et une configuration plus minutieuse (qui n’est jamais bien documentée avec des plugins tiers comme ceux-ci), le service aurait bien fonctionné. Je ne veux pas vous décourager d'essayer.

Débuter avec Sentry

Sentry est un service de journalisation comparable, bien que moins coûteux que Rollbar. Un coût réduit est souvent utile aux startups. 

Vous pouvez voir que leur première hausse de prix commence à seulement 29 $ par mois:

S'enregistrer

Je suis allé de l'avant et utilisé le formulaire d'inscription pour commencer:

Créer un nouveau projet

Dans Sentry, je créé un nouveau projet Meeting Planner pour le suivi des bogues dans ce domaine:

Ensuite, Sentry vous propose des guides pour un certain nombre de langages et de cadres (Yii n’est pas encore inclus, astuce pour l’équipe Sentry!):

Configurer un plugin Yii2 Sentry

Pour Meeting Planner, j'ai choisi l’extension Notamedia Yii2 Sentry. J'ai rencontré quelques problèmes mineurs qui m'ont ralenti.

Le premier problème - pas la faute du plugin

Premièrement, j'ai eu du mal à trouver mes codes d'autorisation uniques pour que mon site s'identifie auprès de Sentry. En général, les services Web les rendent très faciles à trouver, mais cela m'a pris environ 10 à 15 minutes pour les trouver..

Au bas du menu de gauche du menu Réglages page, il y a un Clés client (DSN) option qui les affiche:

J'ai cassé les clés en leurs trois parties et les ai placées dans mon fichier mp.ini pour toutes les clés de Meeting Planner:

#rollbar_key = "bxxxxxxxxxxxxxxxxxxxxxxxxx" "sentry_key_public =" bxxxyyyyxxzzyyyccccc "sentry_key_private =" 8b3333xxxyyyxx

Dans /frontend/config/main.php, j'ai mis à jour les paramètres recommandés du plug-in pour utiliser mes variables spécifiques à partir de mp.ini. Ils commencent ci-dessous avec $ config:

'log' => ['traceLevel' => YII_DEBUG? 3: 0, 'cibles' => [['class' => 'notamedia \ sentry \ SentryTarget', 'dsn' => 'http: //'.$config [' sentry_key_public ']. ':'. $ config ['sentry_key_private']. '@ sentry.io /'.$ config [' sentry_id '],' levels '=> [' error ',' warning '],' context '=> true, // Ecrit les informations de contexte. Le défaut est vrai. ],],

Le deuxième problème

Ensuite, je n’ai pas pu faire en sorte que Sentry capture les rapports d’erreur. Il s'est avéré que la documentation du plug-in de notamedia utilisait l'URL sentry.com au lieu de sentry.io. Heureusement, j'ai compris cela en quelques minutes et je n'ai pas perdu trop de temps.

Courriels d'introduction à Sentry

Sentry vous envoie un courrier électronique d'introduction, mais je ne l'ai pas remarqué plus tard. Pourtant, c'est très utile:

Test de Sentry avec Meeting Planner

Sur un de mes contrôleurs de mon environnement local, je viens d’ajouter le code à actionIndex qui se chargerait quand je chargerais une page sur le site:

\ Yii :: warning a un problème avec Portland. ');

Très rapidement, les rapports de bogue ont commencé à arriver de l’environnement local et de l’environnement de production. Ils atterrissent dans le tableau de bord Sentry. 

Le tableau de bord Sentry

Voici un exemple de rapport pour un de mes faux bogues de test ",Nous avons un problème Portland."Il affiche toutes les données utiles que Sentry collecte pour vous faciliter la détection, l'identification et le débogage des erreurs de production:

Ci-dessus, vous pouvez voir les balises liées aux URL et au navigateur de l'utilisateur. Ci-dessous, le rapport continue en vous montrant les lignes de code qui ont provoqué l'erreur:

Il affiche également les cookies ci-dessus et les en-têtes et identifiants d'utilisateur ci-dessous:

C'est très utile.

Alertes Email Sentry à de nouveaux bugs

Par défaut, Sentry vous envoie également un e-mail avec les bogues (pour que vous les sachiez immédiatement):

En fait, très rapidement, Sentry m'a montré que les hackers de WordPress envoyaient déjà un ping pour wp-login et wp-admin sur mon site. Même s'ils n'existent pas ici, je veux minimiser leurs impacts. J'ai donc ajouté une action Neverland dans le site Web frontal SiteController.php pour terminer l'exécution de l'application..

fonction publique actionNeverland () // pour les scripts abusifs tels que les sondes wp-login Yii :: $ app-> end ();  

Sentry a également détecté un problème d'autorisation lié à la mise en cache de mes tâches en arrière-plan. Cela aussi était utile.

Pour le moment, je suis vendu sur Sentry et je suis impatient d'en tirer quelques bénéfices car il sera en production lors de la sortie de la preview..

Et après?

J'espère que vous avez apprécié l'apprentissage de la gestion et de la journalisation des erreurs de production.

Surveillez les prochains tutoriels ici, dans la série Construire votre démarrage avec PHP. J'ai beaucoup travaillé au développement et au polissage de cette année. Il est temps maintenant d'inciter les gens à utiliser Meeting Planner. Bientôt, j'écrirai sur les plans de promotion de la version préliminaire - c'est un autre élément clé du lancement de votre startup.

Si ce n'est déjà fait, essayez de planifier et partagez Meeting Planner avec vos amis. Comme d'habitude, j'apprécierais que vous partagiez votre expérience ci-dessous dans les commentaires, et je suis toujours intéressé par vos suggestions. Vous pouvez toujours me joindre directement sur Twitter @reifman.

Je me rapproche également du lancement de l'expérience avec WeFunder basée sur la mise en œuvre des nouvelles règles de la SEC en matière de financement participatif. Vous pouvez suivre notre profil ici si vous le souhaitez. Je vais aussi écrire plus à ce sujet dans un prochain tutoriel.

Liens connexes

  • Extension Sentry et Notamedia Yii2 Sentry
  • Planificateur de réunion
  • La page We Funder du planificateur de réunion
  • Programmation avec Yii2: Mise en route
  • L'échange de développeurs Yii2