Uso
Una vez el plugin configurado y activado, ya no hay nada que llamar desde su código. El plugin instala automáticamente los handlers PHP globales y reporta los problemas por usted.
Qué se captura automáticamente
Cuando el plugin está activado con una clave de proyecto válida (una URL de servidor vacía equivale al servicio alojado), registra tres handlers PHP globales (a través del ErrorHandler del núcleo):
- Excepciones no interceptadas: todo
Throwableque llega al gestor de excepciones de PHP se reporta. - Errores PHP: un error producido durante la petición se encapsula en una excepción y se reporta cuando su severidad es
E_USER_ERRORoE_RECOVERABLE_ERROR. El handler respeta la supresión mediante@y su nivelerror_reporting, y deja que el gestor nativo de PHP se ejecute a continuación: el comportamiento existente permanece por tanto sin cambios. - Errores fatales: al final del script, el plugin inspecciona el último error y lo reporta si era fatal (
E_ERROR,E_PARSE,E_CORE_ERROR,E_COMPILE_ERROR). Así es como un error fatal que termina la petición llega de todos modos a su panel.
Cada informe contiene la clase, el mensaje, el archivo y la línea de la excepción, así como la traza de pila completa por defecto (trace_limit vale 0); un valor positivo de trace_limit recorta la traza a ese número de frames. La release configurada se adjunta a cada evento.
Por qué no se reportan las advertencias ni los notices
Antes se transmitía toda severidad, con una llamada HTTP síncrona cada una. En WordPress, la advertencia de cualquier tema o extensión llega a este handler: una sola advertencia dentro de un bucle sobre quinientas filas eran por tanto quinientas llamadas bloqueantes en una carga de página, lo que desde el punto de vista del visitante es una caída, y la cuota mensual de un plan gratuito consumida en un día.
A ese umbral se añaden dos protecciones: el mismo error en el mismo archivo:línea se reporta una sola vez por petición, y se reportan veinte errores como máximo en una petición, porque un umbral no ve un bucle. Los apagados fatales no se ven afectados: los captura el hook de apagado, no este handler.
El envío de informes está diseñado para no romper nunca su sitio: si el servidor es lento o inaccesible, la página sigue mostrándose.
Verificar el funcionamiento
Después de guardar sus ajustes, provoque un error inofensivo y confirme que aparece en su panel Quiet Guard para el proyecto. Una forma rápida consiste en añadir temporalmente un fragmento a un tema o a un pequeño plugin "must-use":
Cargue una vez cualquier página del sitio y consulte después las Issues del proyecto en el panel, debería aparecer una RuntimeException con el mensaje "Quiet Guard test exception". Retire el fragmento después.
Si no llega nada, verifique de nuevo que:
- Enabled vale
1y que Project key está definida; - la Server URL es opcional: vacía, equivale al servicio alojado; rellenada, es la dirección de su servidor (un
/apio/api/v1final se acepta, cualquier otra ruta no); - el servidor es accesible por HTTPS desde el host WordPress;
- el directorio del plugin se construyó con
composer install, de modo que su directoriovendor/existe (vea la Instalación).
Después lea el log. El plugin escribe sus propios diagnósticos con error_log(), es decir, en wp-content/debug.log allí donde WP_DEBUG_LOG está activo: una clave equivocada, una dirección equivocada o un payload rechazado por el servidor producen cada uno una línea que empieza por [Quiet Guard], nombrando el estado y la dirección. Este cliente no pasaba hasta ahora ningún logger: un plugin que nunca había funcionado no tenía forma alguna de decírselo, ni excepción, ni aviso de administración, ni línea de log.
Limpieza de datos sensibles
Antes de que un informe salga del sitio, sus datos de contexto pasan por el limpiador del núcleo, que enmascara los valores por clave. Toda clave cuyo nombre contenga uno de los términos siguientes (coincidencia por subcadena en el nombre de clave, sin distinción de mayúsculas y minúsculas, contando un guion como un guion bajo a partir de la versión 0.3.1, aplicada recursivamente a los arrays anidados) ve su valor reemplazado por [scrubbed]; una clave configurada password enmascara por tanto también user_password:
Esto evita enviar las credenciales evidentes a su servidor. La lista de limpieza está definida en el adaptador WordPress y no puede modificarse desde la pantalla de ajustes en esta versión.
Una segunda pasada se añade encima, procedente del núcleo y sin ajuste propio: los valores con forma de dirección de correo, IBAN, número de tarjeta, número de seguridad social o teléfono franceses se enmascaran estén donde estén, incluido el texto de un mensaje de error, y la máscara nombra lo que ocultó ([redacted:email]).
Punto de ingesta
Como referencia, los informes se entregan mediante una petición HTTPS POST a:
autenticada con la clave de proyecto como token Bearer. Es la misma API de ingesta neutra respecto a la plataforma que usan los clientes Laravel y Symfony: un sitio WordPress aparece por tanto junto a ellos en el mismo panel.
Siguiente paso
Consulte la Actualización para saber cómo actualizar el plugin.
Está leyendo la documentación WordPress Plugin v1.0.