Comment enregistrer un message d'erreur dans drupal
7 réponses
vous pouvez utiliser la watchdog
fonction :
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
citant le manuel, les paramètres sont:
-
$type
la catégorie à laquelle appartient ce message. -
$message
le message à conserver dans le journal. -
$variables
tableau de variables à remplacer dans le message affiché ou nul si le message est déjà traduit ou impossible traduire. -
$severity
La gravité du message, comme par RFC 3164 -
$link
un lien à associer avec le message.
et les niveaux d'erreur peuvent être trouvés sur la page de watchdog_severity_levels
. Pour une erreur, vous utiliserez probablement WATCHDOG_ERROR
, ou peut-être même quelque chose de plus" critique", selon le type d'erreur.
1) en effet, watchdog est un moyen standard d'enregistrer ses propres erreurs PHP.
2) alternativement, si vous avez besoin de voir immédiatement les messages d'erreur pendant le débogage de vos pages Drupal, vous pouvez vouloir les voir journalisées/imprimées directement à la page correspondante - dans la console FireBug. Parfois, c'est très pratique lorsque vous pouvez voir les journaux juste-à-temps liés à la page. Cela nécessite - développer module, Firebug extension à FireFox et éventuellement Firephp .
vous pouvez utiliser la fonction dfb() pour écrire des messages log directement sur la console générale Firebug.
dfb($input, $label = NULL)
si vous voulez garder vos messages de log liés à Drupal hors de la console de Firebug normale, vous pouvez écrire des messages à la Drupal pour Firebug log avec la fonction firep ():
firep($item, $optional_title)
Drupal 8
// Logs a notice
\Drupal::logger('my_module')->notice($message);
// Logs an error
\Drupal::logger('my_module')->error($message);
Voir plus d'exemples à Comment enregistrer les Messages dans Drupal 8 .
Watchdog est sans doute la solution idéale pour un système de production, mais lors du débogage, je trouve la fonction drupal_set_message
utile.
il affiche le message à l'écran où les messages de type "Opération réussie" sont normalement affichés (assurez-vous donc de les supprimer avant de faire le site en direct).
dans drupal 7 Nous pouvons log message par la méthode suivante:
fonction de chien de garde drupal que nous pouvons utiliser pour enregistrer le message dans la base de données , assurez-vous que nous avons activé le module de base optionnel pour L'enregistrement de base de données à /admin/build/modules.
watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)
$type: La catégorie à laquelle appartient ce message , par exemple: PHP,cron.., nous pouvons filtrer le message par type.
$ message: Le message à enregistrer dans le journal,par exemple: "le module suivant est absent du système de fichiers: security_review "
$variables: Tableau de variables à remplacer dans le message affiché ou NULL si le message est déjà traduit ou impossible à traduire. pour faire traduire un message, les variables de passage de valeur dynamique ne pas passer dans le message doivent être ajoutées en utilisant des chaînes de caractères.
exemple: watchdog ('cg_volunteer',' cg in form_alter %formly', array ('%formly' = > $form ['#id']), WATCHDOG_NOTICE, $link = NULL);
$gravité La gravité du message,logs peut être filtré par la gravité conformément à la RFC 3164. Les valeurs possibles sont WATCHDOG_ERROR, WATCHDOG_WARNING, etc. Pour plus d'exemple voir https://api.drupal.org/api/drupal/includes-oui.bootstrap.inc / function/watchdog / 7.x
$lien : Un lien à associer au message.
exemple
/ / for log notices
watchdog('my_module', $message, array());
// pour Loging Erreur
watchdog('my_module', $message, array(), WATCHDOG_ERROR);
dans drupal 8 nous avons utilisé la méthode suivante:
// Pour les Journaux un avis.
\Drupal::logger('my_module')->notice($message);
// Pour les Logs d'erreur.
\Drupal::logger('my_module')->error($message);
/ / en cas d'alerte, des mesures doivent être prises immédiatement.
\Drupal::logger('my_module')->alert($message);
/ / pour Message Critique.
\Drupal::logger('my_module')->critical($message);
// Pour les messages du niveau de Débogage.
\Drupal::logger('my_module')->debug($message);
//en cas d'Urgence, le système est inutilisable.
\Drupal::logger('my_module')->emergency($message);
//Pour L'Avertissement
\Drupal::logger('my_module')->warning($message);
/ / pour les messages D'information.
\Drupal::logger('my_module')->info($message);
aussi pour translate we ne doit pas utiliser t() fonction.
\Drupal::logger('my_module')->alert('Message from @module: @message.', [
'@module' => $module,
'@message' => $message,
]);
ce sera traduit Sur run time.
exemple:
\Drupal::logger('content_entity_example')->notice('@type: deleted %title.',
array(
'@type' => $this->entity->bundle(),
'%title' => $this->entity->label(),
));
les deux watchdog
pour D7 et \Drupal::logger
pour D8 vont écrire log in watchdog
table (dans votre base de données), et avec énormes données enregistrées , vous pouvez imaginer l'impact de la performance.
vous pouvez utiliser error_log
fonction php pour le faire (voir manuel PHP ).
error_log("Your message", 3, "/path/to/your/log/file.log");
vous devez avoir la permission d'écrire dans votre fichier journal (
/path/to/your/log/file.log
)
// Get logger factory.
$logger = \Drupal::service('logger.factory');
// Log a message with dynamic variables.
$nodeType = 'Article';
$userName = 'Admin';
$logger->get($moduleName)->notice('A new "@nodeType" created by %userName.', [
'@nodeType' => $nodeType,
'%userName' => $userName,
]);