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

Connexion avec Monolog: de Devtools à Slack

Christopher Nolan
Libérer: 2025-02-17 08:26:10
original
650 Les gens l'ont consulté

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:

composer require 'monolog/monolog:1.13.*'
Copier après la connexion
Copier après la connexion

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:

// app/bootstrap/container.php

$logger = new \Monolog\Logger('general');
$app->container->logger = $logger;
Copier après la connexion
Copier après la connexion

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):

$app->container->logger->info("一条INFO消息。");
Copier après la connexion
Copier après la connexion

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.

// 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;
Copier après la connexion
Copier après la connexion
// app/routes.php

$app->get('/admin/users', function () use ($app) {
    $app->container->logger->info("另一条INFO消息");
    $app->container->logger->error("另一条ERROR消息");
    // ...
});
Copier après la connexion
Copier après la connexion

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

composer require 'monolog/monolog:1.13.*'
Copier après la connexion
Copier après la connexion

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.

// app/bootstrap/container.php

$logger = new \Monolog\Logger('general');
$app->container->logger = $logger;
Copier après la connexion
Copier après la connexion

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.

$app->container->logger->info("一条INFO消息。");
Copier après la connexion
Copier après la connexion

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

// 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;
Copier après la connexion
Copier après la connexion

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.

// app/routes.php

$app->get('/admin/users', function () use ($app) {
    $app->container->logger->info("另一条INFO消息");
    $app->container->logger->error("另一条ERROR消息");
    // ...
});
Copier après la connexion
Copier après la connexion

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

// app/bootstrap/container.php

// ...
$streamHandler = new \Monolog\Handler\StreamHandler('php://stderr', \Monolog\Logger::ERROR, false);
// ...
Copier après la connexion

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.).

// app/bootstrap/container.php

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

// ...
Copier après la connexion

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

$slackHandler->setLevel(\Monolog\Logger::ERROR);
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal