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