Configuración - Symfony

3 min de lectura Actualizado: 11.09.2026

La configuración completa

ClavePor defectoSignificado
environment%kernel.environment%columna de entorno en el panel
releasenullversión de la aplicación desplegada
sample_rate1.0proporción de eventos de error enviados
traces_sample_rate0.0proporción de transacciones enviadas; 0 desactiva la medición
send_default_piifalseadjunta la dirección IP y el user agent
send_default_usertrueadjunta el usuario autenticado
ignore_exceptions[]clases que nunca se notifican
ignore_transactions['/_wdt', '/_profiler']prefijos de ruta nunca medidos
options{}se pasan directamente al SDK

Entornos

Cada entorno debería informar con un nombre inequívoco: production, staging, preview. El nombre es una columna del panel y un filtro de la lista de errores, así que sin él una caída de producción se ve igual que un error provocado en una prueba. Deja el entorno local sin credenciales: sin token ni clave la integración se carga y permanece en silencio, de modo que no necesitas desactivarla con una condición aparte.

Qué registra el bundle

ListenerEventoQué hace
ExceptionListenerkernel.exception (-128)informa de la excepción con la que la petición realmente murió
TracingListenerkernel.request / kernel.terminateuna transacción por petición principal
UserListenerkernel.controlleradjunta el usuario autenticado
ConsoleErrorListenerconsole.errorinforma de comandos fallidos, etiquetados con el nombre del comando

Los dos últimos solo se registran si están instalados symfony/security-core y symfony/console. La prioridad -128 en kernel.exception es intencionada: informamos de la excepción que ha pasado por todos los listeners de la aplicación, no de una que otro listener está a punto de convertir en una respuesta válida.

Qué dejar fuera de las notificaciones

En Symfony las respuestas 4xx son excepciones, así que sin exclusiones el panel se llena de eventos que no son averías:

yaml
ray:
    ignore_exceptions:
        - Symfony\Component\HttpKernel\Exception\NotFoundHttpException
        - Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
        - Symfony\Component\Security\Core\Exception\AccessDeniedException

ignore_transactions trabaja con prefijos de ruta y omite /_wdt y /_profiler por defecto: sin eso, la mitad de las transacciones de un entorno dev serían el propio profiler.

Contexto de usuario y privacidad

Si la aplicación usa el componente Security, UserListener adjunta el usuario autenticado. send_default_user: false lo desactiva. La dirección IP y el user agent son un interruptor aparte (send_default_pii) y no salen por defecto: también afectan a las peticiones anónimas.

Notificar a mano

El hub está disponible como Dock\Ray\State\HubInterface y como servicio público ray.hub:

php
use Dock\Ray\State\HubInterface;

final class ImportService
{
    public function __construct(private HubInterface $ray)
    {
    }

    public function import(): void
    {
        try {
            $this->run();
        } catch (\Throwable $exception) {
            $this->ray->captureException($exception);

            throw $exception;
        }
    }
}

Las funciones globales del SDK también funcionan: el bundle instala su hub como el actual mientras arranca el contenedor.

Messenger y procesos de larga duración

El hub es un singleton del contenedor, así que un worker mantiene un cliente durante toda su vida. Los mensajes con los que el propio worker muere se notifican a través de console.error; notificar por mensaje requiere tu propio middleware de Messenger alrededor de captureException().

Proteger la clave privada

La clave privada es un secreto del proyecto, no un identificador. Guárdala en variables de entorno, en un gestor de secretos o en la configuración del servidor: nunca en el repositorio, en los registros, en una captura de pantalla ni en código que llegue al navegador. Un proyecto puede tener varias claves, así que producción y preproducción deberían tener la suya: cada una se revoca por separado sin interrumpir a las demás. La sospecha de que una clave se ha filtrado ya es motivo suficiente para revocarla y generar otra.

Siguiente Verificación y problemas habituales - Symfony
Habla con nosotros El chat está cerrado ahora mismo Horario: lu–vi 08:00–18:00