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.
Avantages de base:
Installation:
Monologue est disponible sur Packagist et peut être installé via le compositeur:
composer require 'monolog/monolog:1.13.*'
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;
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消息。");
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;
// app/routes.php $app->get('/admin/users', function () use ($app) { $app->container->logger->info("另一条INFO消息"); $app->container->logger->error("另一条ERROR消息"); // ... });
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.*'
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;
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消息。");
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;
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消息"); // ... });
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); // ...
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); // ...
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);
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!