Cómo registrar errores de plugins en un archivo error_log dentro del plugin
¿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.

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

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

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...).

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');

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