Existe-t-il un moyen recommandé de consigner (en échec) les actions cron à partir de votre plugin? Par exemple, j'ai un plugin qui se synchronise avec un service externe toutes les heures. Je souhaite enregistrer les modifications apportées, mais également lorsque la synchronisation a échoué. Que recommanderiez-vous ici? Une nouvelle table de base de données? Le Log Observations déconseillées plugin le fait avec un type de publication personnalisé, mais cela risque d’être trop lourd? Je crois/ WordPress ne vient pas avec un package de journalisation standard ?
Utilisez un fichier pour écrire les événements. Il y a plusieurs inconvénients ici;
Utilise une table de base de données . Créez votre propre table de base de données et enregistrez les événements à cet endroit. Aucun des inconvénients énumérés ci-dessus ne s'applique. Cela n'ajoute pas beaucoup de complexité. Automatisez la création et la suppression de la table à l'aide d'un crochet de plug-in et vous disposez d'un système de journalisation raisonnablement fiable, je pense.
Envoyer un e-mail . Selon la pertinence des journaux, vous pouvez toujours opter pour cette méthode. Je suppose que vous voudrez probablement envoyer un e-mail en cas d'échec de toute façon.
Utilise l’enregistreur de système d’exploitation . Lorsque vous utilisez la fonction syslog en PHP, vous pouvez écrire des événements dans le consignateur du système (syslog sous Unix, Event Log sous Windows NT). La configuration d'un syslog défini par l'utilisateur complique le déploiement.
Finalement; vous devriez considérer si vous voulez enregistrer le cas normal etexceptions, ou seulement des exceptions. Jeff Atwood a fait un bon write up à ce sujet.
J'espère que cela t'aides!
Utilisez une fonction de journalisation telle que this pour qu’elle enregistre votre déconnexion sur debug.log en configurant votre fichier wp-config.php avec les éléments suivants que j’ai trouvés ici :
/**
* This will log all errors notices and warnings to a file called debug.log in
* wp-content (if Apache does not have write permission, you may need to create
* the file first and set the appropriate permissions (i.e. use 666) )
*/
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors',0);
Cela devrait fonctionner au moins pour le débogage/le développement (je ne suis pas sûr de ce que ce serait formidable pour la journalisation de la production, mais cela fonctionne pour le développement.)
Je conviens que le fait de placer ces données dans wp_posts
pourrait potentiellement faire grossir rapidement la table et la rendre ingérable. C'est bien de créer une table. Je ferais un effort supplémentaire et donnerais à quelqu'un un moyen de nettoyer la table des journaux au cas où ils cesseraient d'utiliser leur plug-in.
Je n'ai pas peur des plugins qui créent des tables, mais c'est peut-être parce que j'ai vu des bases de données WordPress avec 8 000 000 wp_term_relationships
enregistrements et 300 000 publications et je sais à quel point cette expérience peut être désagréable.
dbDelta()
et register_activation_hook()
seront vos amis, ici. Voir Créer des tables avec des plugins .