Maison >développement back-end >tutoriel php >Connexion avec Monolog: de Devtools à Slack

Connexion avec Monolog: de Devtools à Slack

Christopher Nolan
Christopher Nolanoriginal
2025-02-17 08:26:10655parcourir

monologue: une puissante bibliothèque de journaux PHP qui vous aide à améliorer le développement des applications et l'efficacité de maintenance

L'enregistrement du journal est une partie indispensable du cycle de développement et de maintenance des applications, et cela dépend non seulement des données enregistrées, mais aussi de la façon dont elle est enregistrée. Cet article plongera dans le package monologue pour montrer comment il peut vous aider à tirer le meilleur parti de vos journaux.

Logging with Monolog: From Devtools to Slack

Avantages de base:

  • Largement intégré: Monolog est une bibliothèque de journaux populaire qui s'intègre à la plupart des cadres traditionnels pour faciliter les développeurs pour profiter de ses capacités de journalisation. Il suit la norme PHP-Fig, ce qui facilite le passage à d'autres implémentations.
  • Traitement flexible: Monologa prend en charge plusieurs processeurs et mécanismes de bouillonnement, permettant aux développeurs d'enregistrer différents types de messages à différentes sorties. Il prend également en charge l'envoi de messages de journal aux services externes, tels que Slack, pour informer l'équipe lorsqu'une erreur se produit.
  • Fonctionnellement riche: Monologue fournit une gamme de préprocesseurs pratiques pour contenir des informations détaillées telles que les pics de mémoire, les ID utilisateur et permet des formats de messages journaux personnalisés. Cela en fait un outil puissant pour l'exploitation forestière et le débogage pendant les cycles de développement / maintenance des applications.

Installation:

Monologue est disponible sur Packagist et peut être installé via le compositeur:

<code class="language-bash">composer require 'monolog/monolog:1.13.*'</code>

Si vous utilisez un cadre, Monolog fournit généralement une solution d'intégration. L'exemple suivant n'utilise pas l'intégration Framework et montre comment configurer Monolog dans aucune application.

Logueur de connexion:

Lors de la création d'un enregistreur, vous devez spécifier le nom du canal pour distinguer les différents enregistreurs. L'exemple suivant lie la bûcheron au conteneur d'application:

<code class="language-php">// app/bootstrap/container.php

$logger = new \Monolog\Logger('general');
$app->container->logger = $logger;</code>

Monologue suit la norme PSR-3, ce qui facilite le passage à d'autres implémentations. Vous pouvez utiliser les méthodes suivantes pour la journalisation (journal, débogage, informations, avertissement, erreur, critique, alerte, urgence):

<code class="language-php">$app->container->logger->info("一条INFO消息。");</code>

Processeur:

Les messages de journal passeront par la liste des processeurs enregistrés. Le processeur doit spécifier le niveau de journal et l'état de bulle du processus (si le message continue de se propager). Par défaut, Monolog utilise MonologHandlerStreamHandler pour enregistrer le journal à la sortie d'erreur standard. Les processeurs disponibles sont répertoriés dans la documentation.

L'exemple suivant montre comment utiliser plusieurs processeurs et mécanismes bouillonnants: journaux des informations sur la console du navigateur et les messages d'erreur à la sortie du terminal.

<code class="language-php">// app/bootstrap/container.php

$logger = new \Monolog\Logger('general');

$browserHanlder = new \Monolog\Handler\BrowserConsoleHandler(\Monolog\Logger::INFO);
$streamHandler = new \Monolog\Handler\StreamHandler('php://stderr', \Monolog\Logger::ERROR);

$logger->pushHandler($browserHanlder);
$logger->pushHandler($streamHandler);

$app->container->logger = $logger;</code>
<code class="language-php">// app/routes.php

$app->get('/admin/users', function () use ($app) {
    $app->container->logger->info("另一条INFO消息");
    $app->container->logger->error("另一条ERROR消息");
    // ...
});</code>

Logging with Monolog: From Devtools to Slack Logging with Monolog: From Devtools to Slack

Les messages d'erreur sont enregistrés dans le terminal comme prévu, mais pourquoi apparaissent-ils également dans la console du navigateur? Il s'agit du mécanisme bouillonnant de Monolog. Le message d'erreur est d'abord enregistré au terminal et si l'option de bulle est définie sur true, elle continue de se propager en haut de la file d'attente du processeur. Définissez l'option bouillonnante de streamHandler

<code class="language-bash">composer require 'monolog/monolog:1.13.*'</code>

Logging with Monolog: From Devtools to Slack Logging with Monolog: From Devtools to Slack

Les journaux d'erreur ne sont désormais pas affichés dans la console du navigateur, à savoir comment séparer le niveau de journal.

Processeur Slack:

Avant d'utiliser le processeur Slack, vous devez obtenir le jeton pour l'autoriser à publier sur le canal Slack.

<code class="language-php">// app/bootstrap/container.php

$logger = new \Monolog\Logger('general');
$app->container->logger = $logger;</code>

Vous avez juste besoin de spécifier le jeton Slack et le nom du canal, le troisième paramètre facultatif est le nom du robot. Le niveau de journal de Slack est essentiel, mais vous pouvez le modifier en utilisant la méthode setLevel.

<code class="language-php">$app->container->logger->info("一条INFO消息。");</code>

Après avoir envoyé un message de journal, vous pouvez accéder à votre chaîne pour afficher les messages d'erreur enregistrés.

<code class="language-php">// app/bootstrap/container.php

$logger = new \Monolog\Logger('general');

$browserHanlder = new \Monolog\Handler\BrowserConsoleHandler(\Monolog\Logger::INFO);
$streamHandler = new \Monolog\Handler\StreamHandler('php://stderr', \Monolog\Logger::ERROR);

$logger->pushHandler($browserHanlder);
$logger->pushHandler($streamHandler);

$app->container->logger = $logger;</code>

Logging with Monolog: From Devtools to Slack

FORMATINGER:

Chaque processeur a un formateur par défaut, s'il n'est pas spécifié, utilisez LineFormatter. Vous pouvez passer à d'autres formateurs tels que HtmlFormatter.

<code class="language-php">// app/routes.php

$app->get('/admin/users', function () use ($app) {
    $app->container->logger->info("另一条INFO消息");
    $app->container->logger->error("另一条ERROR消息");
    // ...
});</code>

Les messages de journal seront désormais connectés à la console du navigateur au format HTML.

<code class="language-php">// app/bootstrap/container.php

// ...
$streamHandler = new \Monolog\Handler\StreamHandler('php://stderr', \Monolog\Logger::ERROR, false);
// ...</code>

Logging with Monolog: From Devtools to Slack

Préprocesseur:

Le préprocesseur est utilisé pour ajouter plus de détails aux journaux. Par exemple, WebProcessor Ajoutez plus de détails sur la demande (URL, IP, etc.).

<code class="language-php">// app/bootstrap/container.php

// ...
$slackHandler = new \Monolog\Handler\SlackHandler('xoxp-5156076911-5156636951-6084570483-7b4fb8', '#general', 'ChhiwatBot');
$logger->pushHandler($slackHandler);

// ...</code>

Lors de la journalisation, la journalisation passera par la liste des processeurs enregistrés et vous obtiendrez plus de détails.

<code class="language-php">$slackHandler->setLevel(\Monolog\Logger::ERROR);</code>

Logging with Monolog: From Devtools to Slack

Résumé:

Monologue est l'une des excellentes bibliothèques de journaux et s'intègre à la plupart des cadres traditionnels.

FAQ:

(La partie FAQ est omise ici parce que l'article est trop long et a une répétition élevée du contenu principal de l'article. Si nécessaire, vous pouvez poser des questions FAQ séparément et je leur répondrai un par un.)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn