Come registrare gli errori dei plugin in un file error_log specifico
Come è possibile registrare gli errori specifici di un determinato plugin in un file error_log
situato nella cartella principale del plugin stesso?
Esempi:
- Errori di sintassi
- Errori del database
- Errori di compatibilità
- Errori PHP fatali
- Errori nelle richieste Ajax
Simile al file /wp-content/debug.log
che viene abilitato quando WP_DEBUG_LOG
è definito come true
nel file wp-config.php
(ma specificamente per i plugin, mantenendo separati i loro errori da quelli generali non correlati al plugin).
Ricerche:
La sezione Debugging Plugins nella documentazione ufficiale del Codex fa riferimento all'uso di plugin di terze parti per il debug di plugin di terze parti.
Don't Develop Without Debuggingdi Smashing Magazine tratta del debug generale a livello di sito.
Il Plugin Handbook non sembra fornire linee guida specifiche su questo argomento.

Impostando il secondo argomento a 3 per error_log
:
$pluginlog = plugin_dir_path(__FILE__).'debug.log';
$message = 'QUALCHE ERRORE'.PHP_EOL;
error_log($message, 3, $pluginlog);

Non posso essere reattivo come vorrei, ma esplorerò questa soluzione e fornirò feedback appena possibile.

Da tutti gli indicatori e dopo un'ulteriore lettura della documentazione fornita, questa sembra essere la risposta corretta per l'ambito definito nella descrizione del problema. La gestione degli errori è tipicamente più verbosa, ma sarebbe fuori tema per il problema descritto qui, e credo che questo approccio funzionerà bene con la gestione delle eccezioni usando i blocchi try()
e catch()
(esplorerò questa strada successivamente...).

Sì, ho capito che visto che hai menzionato così tanti tipi diversi di errori, stavi cercando qualcosa di generico come questo per poter testare e registrare qualsiasi messaggio dove necessario. A parte le eccezioni come hai menzionato, gli errori fatali di PHP richiederebbero una gestione aggiuntiva tramite register_shutdown_function
o usando l'hook shutdown, ad esempio add_action('shutdown', 'custom_catch_fatals');

Ho utilizzato alcune di queste cose in un progetto recentemente, quindi potresti trovarle utili come riferimento: https://gist.github.com/majick777/6c4e4074ce4a59fe09f7baa855732aee
