it-swarm-eu.dev

Jak zaznamenám akce pluginu (cron)?

Existuje doporučený způsob, jak zaznamenávat (neúspěšné) akce cron z pluginu? Mám například plugin, který každou hodinu synchronizuje s externí službou. Chci se přihlásit, kolik bylo změněno, ale také, když synchronizace selhala. Co byste zde doporučil? Nová databázová tabulka? Log Deprecated Notices plugin dělá to s vlastním typem příspěvku, ale to může být příliš mnoho režie? Věřím WordPress není dodáván se standardním logovacím balíkem ?

6
Jan Fabry
  1. Použijte souborpro zápis událostí do. Existuje zde několik nevýhod;

    • Filesystem oprávnění . Když nasadíte svou aplikaci, budete muset dbát na to, abyste nezapomněli dát svému webovému serveru oprávnění zapisovat do souboru. A abyste si byli jisti, měli byste napsat kód, který kontroluje, zda můžete do souboru zapisovat a vydávat varování, když nemůžete. To zvyšuje složitost a je pravděpodobně příčinou problémů s nasazením.
    • Náhodné smazání . Můžete omylem odstranit vlastní soubor protokolu a ztratit své záznamy. To může být nepohodlné.
    • Vlastní logformat . Budete muset přijít s vlastním (strojově čitelným?) Textovým formátem pro zápis událostí do vašeho souboru. Když musíte změnit formát protokolu, neexistuje žádný pohodlný způsob, jak migrovat staré záznamy. Chcete-li na záznamech provést nějakou analýzu, musíte záznamy analyzovat. To vede k většímu počtu kódů a větší složitosti. Složitost je špatná.
  2. Použít databázovou tabulku. Vytvořte si vlastní databázovou tabulku a zaznamenejte do ní události. Žádná z výše uvedených nevýhod neplatí. Nepřináší to mnoho složitosti. Automatizujte vytváření a mazání tabulky pomocí háčku pluginů a myslím, že máte rozumně spolehlivý logovací systém.

  3. Poslat e-mail. V závislosti na relevanci protokolů se můžete vždy rozhodnout pro tuto metodu. Myslím, že byste v případě selhání pravděpodobně chtěli poslat e-mail.

  4. Použít logger OS. Při použití funkce syslog v PHP můžete zapisovat události do systémového loggeru (syslog na Unixu, Event Log na Windows NT). Konfigurace uživatelsky definovaného syslogu komplikuje nasazení.

Konečně; měli byste zvážit, zda chcete logovat normální případ a výjimky, nebo pouze výjimky. Jeff Atwood udělal dobrý writeup o tom.

Snad to pomůže!

6
Wietse Venema

Použijte protokolovací funkci jako to , aby se vaše odpisy zapisovaly do debug.log konfigurací wp-config.php s následujícími, které jsem našel zde :

/**
 * 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);

To by mělo fungovat minimálně pro účely ladění/vývoje (nejsem si jistý, jak velké by to bylo pro protokolování výroby, ale funguje pro vývoj.)

6
leeand00

Souhlasím s tím, že uvedení těchto dat do souboru wp_posts by mohlo vést k rychlému růstu tabulky na nezvládnutelnou velikost. Je dobré vytvořit tabulku. Chtěl bych jít extra mile a dát někomu způsob, jak vyčistit tabulku protokolu v případě, že přestanou používat svůj plugin.

Nebojím se pluginů, které vytvářejí tabulky, ale možná je to proto, že jsem viděl WordPress databáze s 8 000 000 wp_term_relationships záznamy a 300 000 příspěvky a vím, jak nepříjemné mohou být tyto zkušenosti.

dbDelta() a register_activation_hook() budou vaši přátelé, tady. Viz Vytváření tabulek s pluginy .

2