Cómo registrar errores de plugins en un archivo error_log dentro del plugin

15 ene 2018, 15:31:19
Vistas: 16.7K
Votos: 5

¿Cómo se pueden registrar errores específicos de un plugin en un archivo error_log ubicado dentro de la carpeta raíz del propio plugin?

Ejemplos:

  • Errores de sintaxis
  • Errores de base de datos
  • Errores de compatibilidad
  • Errores fatales de PHP
  • Errores en solicitudes Ajax

Similar al archivo /wp-content/debug.log que se habilita cuando WP_DEBUG_LOG se define como true en el archivo wp-config.php (pero específicamente para plugins, manteniendo sus errores separados de otros errores generales no relacionados con el plugin).

Investigación:

Depuración de Plugins en la documentación oficial del Codex menciona el uso de plugins de terceros para depurar plugins de terceros.

No desarrolles sin depuraciónpor Smashing Magazine se refiere a la depuración general de todo el sitio.

Manual de Plugins no parece establecer directrices específicas.

0
Todas las respuestas a la pregunta 1
6
12

Al establecer el segundo argumento como 3 para error_log:

$pluginlog = plugin_dir_path(__FILE__).'debug.log';
$message = 'ALGÚN ERROR'.PHP_EOL;
error_log($message, 3, $pluginlog);

http://php.net/manual/en/function.error-log.php

15 ene 2018 16:48:54
Comentarios

No puedo ser tan receptivo como me gustaría, pero exploraré esta solución y volveré con comentarios cuando sea posible.

UncaughtTypeError UncaughtTypeError
16 ene 2018 08:49:42

Por todos los indicios y tras una lectura más profunda de la documentación fuente proporcionada, esta parece ser la respuesta correcta para el alcance definido en el enunciado del problema. El manejo de errores suele ser más detallado, pero eso estaría fuera del tema para el problema descrito aquí, y creo que esto funcionará bien con el manejo de excepciones usando bloques try() y catch() (exploraré este camino a continuación...).

UncaughtTypeError UncaughtTypeError
16 ene 2018 11:23:08

sí, supuse que ya que mencionaste tantos tipos diferentes de errores, estabas buscando algo tan genérico como esto para poder probar y registrar cualquier mensaje donde sea necesario. Aparte de las excepciones como mencionas, los errores fatales de PHP requerirían un manejo adicional mediante register_shutdown_function o usando el hook de apagado, por ejemplo add_action('shutdown', 'custom_catch_fatals');

majick majick
16 ene 2018 11:35:38

Gracias por mencionar esto, exploraré estos métodos también.

UncaughtTypeError UncaughtTypeError
16 ene 2018 11:53:24

Usé algo de esto en un proyecto recientemente, así que puede que te sea útil como referencia: https://gist.github.com/majick777/6c4e4074ce4a59fe09f7baa855732aee

majick majick
16 ene 2018 13:13:45

Genial, esto debería ayudar a poner las cosas en contexto. ¡Muchas gracias!

UncaughtTypeError UncaughtTypeError
16 ene 2018 13:16:44
Mostrar los 1 comentarios restantes