Configuration
Le bundle se configure sous une unique arborescence monitor, par convention dans config/packages/monitor.yaml. Chaque valeur correspond directement aux types du cœur monitor-php que le bundle câble pour vous.
Référence complète
Options
| Clé | Type | Défaut | Description |
|---|---|---|---|
enabled | bool | true | Interrupteur principal. Les services sont toujours définis, et false agit à l'exécution : rien n'est capturé et rien n'est envoyé. C'est cette définition systématique qui permet à config/packages/dev/monitor.yaml de poser enabled: false sans qu'un monolog.yaml référençant monitor.log_handler casse la compilation. |
url | string | null | URL de base de votre serveur Quiet Guard. Les chemins d'endpoint y sont ajoutés ; un slash final est retiré. Vide ou absente, elle vaut le service hébergé https://quietguard.dev : une application qui l'utilise n'a que la clé à fournir. |
key | string | null | Le jeton d'API par projet, envoyé en Authorization: Bearer <key>. |
timeout | int | 3 | Délai d'expiration du transport, par requête, en secondes. |
release | string | null | Identifiant de release optionnel (par ex. un SHA de commit) attaché au contexte des exceptions et des logs. |
trace_limit | int | 0 | 0 (le défaut) envoie la pile d'appels complète avec chaque exception ; une valeur positive tronque la charge utile à ce nombre de frames. Le site de levée, en tête de la pile depuis la version 0.3, compte pour une frame. |
code_snippets | bool | true | Envoie, avec chaque frame de l'application, les cinq lignes de source de part et d'autre de la sienne, lues dans le fichier qui a tourné. Jamais pour une dépendance ; une ligne qui nomme une clé de scrub et lui donne une valeur est masquée entière. false n'envoie que le fichier et la ligne. |
environments | liste de string | [] | Ne remonter que depuis ces environnements. Une liste vide signifie « tous les environnements ». Comparé à kernel.environment. |
scrub | liste de string | voir ci-dessous | Clés de contexte dont les valeurs sont masquées avant l'envoi (récursif, insensible à la casse ; à partir de la version 0.3.1, un tiret y vaut un souligné). |
redact | liste de string | email, iban, nir, card, phone | Formes de valeurs masquées où qu'elles se trouvent, texte d'un message et segments d'URL compris. Une liste vide désactive le masquage. |
redact_custom | table de string | {} | Vos propres formes, sous la forme libellé: motif PCRE. Un libellé customer_ref masque en [redacted:customer_ref]. |
logs.enabled | bool | false | Active la transmission des logs. Le service handler est toujours enregistré tant que le bundle est activé ; à false, il ignore tous les enregistrements. Vous devez encore l'attacher à Monolog, voir Usage. |
logs.level | string | warning | Niveau minimal capturé par le handler (un nom de niveau Monolog). |
logs.max_batch | int | 200 | Vide le tampon de logs vers le serveur dès qu'il atteint ce nombre d'enregistrements. |
Clés de masquage par défaut
Lorsque vous ne définissez pas scrub, le bundle utilise :
Définir scrub remplace cette liste : pensez à y réinclure les valeurs par défaut que vous souhaitez conserver. À partir de la version 0.3.1, le masquage atteint aussi l'URL rapportée avec chaque exception, une valeur JSON écrite en chaîne, et les valeurs que porte le message d'un log quand il commence par une URL ou qu'il est du JSON : voir Usage.
Masquage par la forme de la valeur
scrub regarde le nom de la clé. Il ne voit jamais une adresse écrite dans le texte libre d'un message d'exception, dans un segment d'URL, ou dans un champ que quelqu'un a appelé reference. redact regarde la valeur, sur votre propre serveur, avant tout envoi, et il est actif par défaut avec les cinq formes.
Ce défaut s'appliquait déjà avant d'être déclaré ici, et c'est la raison de le dire clairement : le bundle masquait des valeurs qu'il ne documentait nulle part, et toute tentative de le configurer échouait à la compilation du conteneur avec Unrecognized option. Les deux clés font désormais partie de l'arborescence.
Les formes qui portent une clé de contrôle sont vérifiées et non simplement reconnues : une référence de commande à seize chiffres n'est pas prise pour un numéro de carte, et chaque masque nomme ce qu'il a caché ([redacted:email]), si bien que le message reste lisible.
Variables d'environnement
Rien ne vous oblige à utiliser des variables d'environnement, mais c'est le motif recommandé pour garder les secrets hors du dépôt. Un câblage typique :
La forme %env(default::MONITOR_RELEASE)% retombe sur une valeur vide quand la variable n'est pas définie, et release reste donc simplement vide.
Restreindre les environnements
Par défaut (environments: []), le bundle remonte depuis tous les environnements, y compris dev. Pour ne remonter que depuis la production :
L'event subscriber d'exception comme le handler de logs Monolog vérifient cette liste contre kernel.environment avant tout envoi : dans tout autre environnement, rien ne quitte votre application, ni exceptions ni logs.
Correspondance configuration / services
| Configuration | Service construit |
|---|---|
url, key, timeout, release, environments, trace_limit, code_snippets, redact, redact_custom | monitor.config (Config) |
scrub | monitor.scrubber (Scrubber) |
trace_limit, release, code_snippets | monitor.payload_builder (ExceptionPayloadBuilder) |
enabled | monitor.exception_subscriber, qui reçoit l'interrupteur et l'applique à l'exécution |
| — | monitor.http_client (CurlHttpClient), monitor.reporter (Reporter), qui prend le logger de l'application lorsqu'il existe |
logs.* | monitor.log_handler (MonitorHandler), toujours enregistré tant que le bundle est activé ; avec logs.enabled: false, il ignore tous les enregistrements, et un monolog.yaml qui le référence continue donc de compiler |
Consultez Usage pour le comportement de ces services à l'exécution.
Vous lisez la documentation Symfony Bundle v1.0.