Manual:Structured logging/fr

La journalisation structurée est l'enregistrement opérationnel (debogage) dans le journal, des données structurées pour faciliter le post traitement ultérieur. C'est différent de.

Depuis MediaWiki 1.25, le standard de connexion PSR-3 est utilisable par le noyau MediaWiki et les extensions pour remplacer les appels de débogage  et. La norme PSR-3 permet de joindre un tableau de données contextuelles à chaque message de journal pour fournir des paires clé-valeur structurées.



Conversion de wfDebug et wfDebugLog en PSR-3


Obtenir un journal à partir de
Où  doit être le nom d'une extension (ou préfixé avec le nom) ou l'un des canaux de journalisation principaux.



Utiliser des niveaux de gravité informatifs

 * Ce sont des messages qui sont utiles pour le développement local et sont généralement trop "spammy" pour sortir sur un wiki de production. Cela inclurait généralement tout ce qui est actuellement enregistré via wfDebug.
 * Ce sont des messages qui sont utiles pour le développement local et sont généralement trop "spammy" pour sortir sur un wiki de production. Cela inclurait généralement tout ce qui est actuellement enregistré via wfDebug.


 * Informations de modification d'état précieuses. Ce niveau permet d'enregistrer des informations qui seraient utiles dans un environnement de production pour tracer le chemin d'une demande qui a finalement rencontré une erreur. Il s'agit actuellement du niveau automatiquement associé aux appels  lorsqu'il est mappé à PSR-3.
 * Informations de modification d'état précieuses. Ce niveau permet d'enregistrer des informations qui seraient utiles dans un environnement de production pour tracer le chemin d'une demande qui a finalement rencontré une erreur. Il s'agit actuellement du niveau automatiquement associé aux appels  lorsqu'il est mappé à PSR-3.


 * Condition d'erreur logicielle, telle qu'une erreur récupérable ou une autre condition qui ne doit généralement pas être vue mais qui ne s'interrompt pas pour l'opération en cours.
 * Condition d'erreur logicielle, telle qu'une erreur récupérable ou une autre condition qui ne doit généralement pas être vue mais qui ne s'interrompt pas pour l'opération en cours.


 * Erreur sévère, telle qu'une exception interceptée sans chemin de récupération.
 * Erreur sévère, telle qu'une exception interceptée sans chemin de récupération.

La norme PSR-3 inclut d'autres niveaux de gravité, mais ils ne sont pas recommandés pour une utilisation dans MediaWiki.



Ajouter des données structurées au contexte de journalisation
Toutes les méthodes de journalisation prennent un objet de contexte facultatif, par exemple :

Vous devez ajouter des informations structurées utiles à vos messages de journalisation dans cet objet de contexte que d'autres peuvent utiliser pour rechercher les messages associés et suivre la cause de l'erreur. Ceci est particulièrement important et utile pour les messages de niveau  et   où l'opérateur du wiki ne connaît peut-être pas le chemin du code et doit être capable de produire un bon rapport de bogue.


 * Si vous passez un objet Exception dans le paramètre de contexte, il DOIT être dans la clé 'exception' (par ex. )
 * Joindre des paramètres ou un autre état intéressant aux messages. Vous pouvez utiliser des objets ou tout autre type ; ils seront convertis en chaînes de manière raisonnable (par exemple en utilisant la méthode magique  si elle existe).
 * des cas ont été rencontrés pour lesquels certains éléments de contexte pouvaient faire que la journalisation échouait sans avertissement. Voir ce ticket Phabricator.
 * Les paramètres standard (nom du wiki, nom du serveur, etc.) seront ajoutés automatiquement. Les détails dépendent du service de journalisation que vous utilisez, mais vous utiliserez probablement.
 * Remplacez les fausses structures telles que les éléments séparés par des tabulations, les paires étiquette=valeur/étiquette : valeur ou la sérialisation json.
 * Enregistrez les piles d'appels (stack) en créant des objets exception et en les ajoutant au contexte de trace puis en les supprimant (tel ).

De nombreux agrégateurs de journaux essaient de supprimer les doublons dans les journaux, alors essayez de garder les détails modifiables hors du message et placez-les dans le contexte. Le logger remplacera tous les jetons à l'intérieur des accolades par la valeur correspondante du contexte. Par exemple, le code

aboutira à quelque chose comme :

Pour une compatibilité maximale avec les différents serveurs de journalisation, n'utilisez pas ces clés dans vos données de contexte :





Configuration de votre wiki pour la journalisation structurée
Pour la compatibilité ascendante, si vous utilisez la configuration par défaut de MediaWiki en ayant configuré la journalisation de base et que vous fournissiez un objet de contexte à ces méthodes de journalisation ou aux fonctions globales de MediaWiki telles que, les informations de l'objet de contexte n'apparaissent pas dans les fichiers journaux que vous avez configurés. Vous devez implémenter un meilleur outil de journalisation, tel que monolog, en tant qu'interface de fournisseur de services d'enregistrement. Voir et.



Voir aussi

 * Requests for comment/Structured logging
 * PSR-3 norme de journalisation
 * logstash - Wikimedia alimente la plupart de ses journaux MediaWiki dans leur espace de réserve, qui reconnaît la journalisation structurée
 * logstash - Wikimedia alimente la plupart de ses journaux MediaWiki dans leur espace de réserve, qui reconnaît la journalisation structurée