Vous êtes ici

Comment fonctionne le tableau de bord Journalisation et erreurs sous Drupal 8 ?

Portrait de DrupalFacile
Soumis par DrupalFacile le mer, 28/10/2015 - 09:13

Pour vous rendre sur le tableau de bord fournit par le module Database Logging, naviguez vers Gérer > Configuration > Journalisation et erreurs (admin/config/development/logging). Le fonctionnement devrait être assez évident, mais voici quand même quelques explications : par défaut, les messages d'erreur ne sont pas affichés sur votre site, du moins juste l'essentiel pour avertir vos utilisateurs que quelque chose n'a pas fonctionné. C'est très bien en ce sens que si vous mettez un site en production, vous ne voulez pas avoir de message d'erreur PHP qui apparaisse directement sur le site, d'autant que des informations sensibles peuvent parfois y être révélées.

Voici un exemple de message d'erreur concis qui pourrait apparaître :

The website encountered an unexpected error. Please try again later.

Si vous désirez changer le rapport d'erreurs pour vos besoins de développements, sélectionnez directement l'option Tous les messages, avec les informations de trace puisque vous voulez connaître tout de l'erreur qui vient d'arriver. Le message générique ci-dessus devient alors beaucoup plus utile pour le développeur :

The website encountered an unexpected error. Please try again later.

InvalidArgumentException: Class "\Drupal\compta\Form\ComptaStructureForm" does not exist. in Drupal\Core\DependencyInjection\ClassResolver->getInstanceFromDefinition() (line 29 of core/lib/Drupal/Core/DependencyInjection/ClassResolver.php).

Drupal\Core\Controller\HtmlFormController->getFormObject(Object, '\Drupal\compta\Form\ComptaStructureForm')
Drupal\Core\Controller\FormController->getContentResult(Object, Object)
call_user_func_array(Array, Array)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
call_user_func_array(Object, Array)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1)
Stack\StackedHttpKernel->handle(Object, 1, 1)
Drupal\Core\DrupalKernel->handle(Object)

Sur ce même tableau de bord, vous pouvez paramétrer le nombre de Messages de journalisation de la base à garder. Par défaut, le réglage est de 1000 mais vous pouvez sélectionner de 100 à 1000000, ou bien carrément tout garder. Les messages seront alors visibles sur Gérer > Rapports > Entrées récentes du journal et seront purgés lorsque cron tournera, si et seulement si le nombre maximal d'entrées stockées a été atteint.

Préférez néanmoins toujours l'utilisation du module Syslog plutôt que Database Logging pour des raisons de performance. Leur différence principale est que Syslog écrit dans des fichiers de log sur le serveur alors que Database Logging écrit dans la base de données de Drupal, causant potentiellement des ralentissements de performance si votre site écrit beaucoup de messages d'erreur.

Version: 
Drupal 8
Niveau: 
Débutant
Partager ce contenu