it-swarm-es.com

¿Cómo inicio sesión las acciones del complemento (cron)?

¿Hay alguna forma recomendada de registrar (con error) las acciones cron de su complemento? Por ejemplo, tengo un complemento que se sincroniza con un servicio externo cada hora. Quiero registrar cuánto se cambió, pero también cuando falló la sincronización. ¿Qué recomendarías aquí? ¿Una nueva tabla de base de datos? El Log Not Deprecated Notices plugin hace esto con un tipo de publicación personalizada, pero ¿podría ser una sobrecarga? Creo que WordPress no viene con un paquete de registro estándar ?

6
Jan Fabry
  1. Use un archivopara escribir los eventos en. Hay varios inconvenientes aquí;

    • Permisos del sistema de archivos . Cuando implementes tu aplicación, deberás tener cuidado de recordar darle permiso al servidor web para escribir en el archivo. Y para estar más seguro, tendría que escribir un código que verifique si puede escribir en el archivo y emitir una advertencia cuando no pueda. Esto agrega complejidad y es probable que sea una causa de problemas de implementación.
    • Eliminación accidental . Podría eliminar accidentalmente el archivo de registro personalizado y perder sus registros. Esto podría ser un inconveniente.
    • Logformat personalizado . Tendría que crear un formato de texto personalizado (¿legible por máquina?) Para escribir los eventos en su archivo. Cuando tiene que cambiar el formato de registro, no hay una forma conveniente de migrar registros antiguos. Cuando desee realizar algún tipo de análisis en los registros, tendrá que analizar los registros. Esto lleva a más código y más complejidad. La complejidad es mala.
  2. Usar una tabla de base de datos. Crea tu propia tabla de base de datos y registra los eventos allí. Ninguno de los inconvenientes mencionados anteriormente se aplican. No añade mucha complejidad. Automatice la creación y eliminación de la tabla mediante un enlace de complemento y creo que tiene un sistema de registro razonablemente confiable.

  3. Enviar un correo electrónico. Dependiendo de la relevancia de los registros, siempre puede optar por este método. Me imagino que probablemente querrá enviar un correo electrónico en caso de una falla de todos modos.

  4. Usar el registrador del sistema operativo. Cuando utiliza la función syslog en PHP, puede escribir eventos en el registrador del sistema (syslog en Unix, Registro de eventos en Windows NT). Configurar un syslog definido por el usuario complica la implementación.

Finalmente; debe considerar si desea registrar el caso normal y excepciones, o solo excepciones. Jeff Atwood hizo un buen redacción sobre esto.

¡Espero que esto ayude!

6
Wietse Venema

Use una función de registro como this , para que escriba su sesión en debug.log configurando su wp-config.php con lo siguiente que encontré here :

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

Esto debería funcionar para fines de depuración/desarrollo al menos (no estoy seguro de qué tan bueno sería para el registro de producción, pero funciona para el desarrollo).

6
leeand00

Estoy de acuerdo, poner estos datos en wp_posts podría hacer que la tabla crezca rápidamente a un tamaño inmanejable. Está bien crear una tabla. Me gustaría ir más allá y dar a alguien una forma de limpiar la tabla de registro en caso de que dejen de usar su complemento.

No tengo miedo de los complementos que crean tablas, pero tal vez sea porque he visto bases de datos de WordPress con 8,000,000 de wp_term_relationships registros y 300,000 publicaciones y sé cuán desagradable puede ser esa experiencia.

dbDelta() y register_activation_hook() serán tus amigos, aquí. Ver Crear tablas con complementos .

2
Annika Backstrom