Comment ajouter des logs dans Drupal 8

  • | Développement
Logs dans Drupal 8

Il est plus qu'utile quand on développe un module, de loguer ce que fait le module, de récupérer les erreurs voir de modifier le système de log de Drupal. Voyons comment on utilise les logs dans Drupal 8.

Commande pour loguer les messages d'informations

La commande pour loguer des informations dans le dblog de Drupal est :

\Drupal::logger('my_module')->error('This is the error');

'my_module' correspond à un channel, plus particulièrement un LoggerChannel qui représente la catégorie du message. 

On retrouve le channel dans l'administration de Drupal qui correspond au type, ce qui permet de trier les messages par module par exemple si c'est le nom du module qui est choisi comme channel.

 

Les logs dans Drupal 8

 

A noter qu'on peut créer son propre logger channel pour par exemple créer des actions supplémentaires comme envoyer un email à un administrateur sur des erreurs critiques par exemple.

Dans l'image ci dessus, on voit qu'on peut également classer les logs de Drupal 8 par type d'erreurs : Urgence, Alerte, Critique, Erreur, Avertissement, Information, Info et Debug.

Voici les différentes méthodes pour gérer le type d'erreur :

  • emergency($message, $context)
  • alert($message, $context)
  • critical($message, $context)
  • error($message, $context)
  • warning($message, $context)
  • notice($message, $context)
  • info($message, $context)
  • debug($message, $context)

Quand on crée un module, on hérite automatiquement sans ajout supplémentaire du système de logs de Drupal 8. On peut donc se servir directement de l'exemple ci-dessous.

Exemple de logs dans Drupal 8

 Exemple d'utilisation avec le channel "content_entity_example" et le niveau de log du message sur "Information" (notice). C'est proche du message qu'on a quand on supprime ou on modifie un contenu.

\Drupal::logger('content_entity_example')->notice('@type: deleted %title.',
   array(
       '@type' => $this->entity->bundle(),
       '%title' => $this->entity->label(),
   ));

 

Pour aller plus loin sur les logs de Drupal et notamment sur la création de son propre channel voici la document sur l'API Logging.

L'auteur de cet article
Julien Krier
Responsable Digital, ayant occupé différents postes en informatique depuis 2001, Julien Krier a travaillé sur de multiples plateformes, sites de contenu ou e-commerce à fort trafic. Il est spécialisé dans les technologies web sur les CMS comme Drupal 7 ou Drupal 8 et les Framework Php comme Symfony 5.
Cet article vous a aidé?
Aucun vote pour le moment
Partagez cet article
Articles sur le même sujet
Patcher un module de DrupalIl peut arriver que sur une mise à jour par exemple on se retrouve avec un bug sur un module. Des patchs peuvent alors corriger le problème.
hook_help() : créer une page d'aide pour un module en Drupal 8Pour développer de bons modules pérennes, il est important d'avoir des informations ou de la documentation sur le fonctionnement du module ou son installation. Pour enregistrer ces informations on implémente le hook_help().
Comment créer un service dans Drupal 8Quand on développe sur Drupal 8, on passe quasiment obligatoirement par la case service. Qu'est ce qu'un service et comment le configurer? C'est par ici!