Konfiguracja - Symfony

3 min czytania Aktualizacja: 11.09.2026

Na tej stronie Pełna konfiguracja
  1. Pełna konfiguracja
  2. Środowiska
  3. Co bundle rejestruje
  4. Co wykluczyć z raportowania
  5. Kontekst użytkownika i prywatność
  6. Ręczne raportowanie
  7. Messenger i długo żyjące procesy
  8. Ochrona klucza prywatnego

Pełna konfiguracja

KluczDomyślnieZnaczenie
environment%kernel.environment%kolumna środowiska w panelu
releasenullwersja wdrożonej aplikacji
sample_rate1.0udział wysyłanych zdarzeń błędów
traces_sample_rate0.0udział wysyłanych transakcji; 0 wyłącza pomiar
send_default_piifalsedołącza adres IP i user agenta
send_default_usertruedołącza uwierzytelnionego użytkownika
ignore_exceptions[]klasy nigdy nieraportowane
ignore_transactions['/_wdt', '/_profiler']prefiksy ścieżek pomijane w pomiarze
options{}przekazywane wprost do SDK

Środowiska

Każde środowisko powinno raportować pod jednoznaczną nazwą - production, staging, preview. Nazwa jest kolumną w panelu i filtrem na liście błędów, więc bez niej awaria z produkcji wygląda dokładnie tak samo jak błąd wywołany w testach. Środowisko lokalne zostaw bez poświadczeń: bez tokenu i klucza integracja ładuje się i milczy, więc nie musisz jej wyłączać osobnym warunkiem.

Co bundle rejestruje

ListenerZdarzenieCo robi
ExceptionListenerkernel.exception (-128)raportuje wyjątek, na którym żądanie faktycznie padło
TracingListenerkernel.request / kernel.terminatejedna transakcja na główne żądanie
UserListenerkernel.controllerdołącza uwierzytelnionego użytkownika
ConsoleErrorListenerconsole.errorraportuje błędy komend, oznaczone nazwą komendy

Dwa ostatnie rejestrują się tylko wtedy, gdy w projekcie są symfony/security-core i symfony/console. Priorytet -128 przy kernel.exception jest celowy: raportujemy wyjątek, który przeszedł przez wszystkie listenery aplikacji, a nie ten, który jeden z nich zaraz zamieni na poprawną odpowiedź.

Co wykluczyć z raportowania

Odpowiedzi 4xx w Symfony są wyjątkami, więc bez wykluczeń panel wypełnią zdarzenia, które nie są awariami:

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

ignore_transactions działa na prefiksach ścieżek i domyślnie pomija /_wdt i /_profiler - bez tego połowa transakcji ze środowiska dev dotyczyłaby samego profilera.

Kontekst użytkownika i prywatność

Jeżeli aplikacja używa komponentu Security, UserListener dołącza uwierzytelnionego użytkownika. send_default_user: false to wyłącza. Adres IP i user agent są osobnym przełącznikiem (send_default_pii) i domyślnie nie wychodzą - dotyczą także żądań anonimowych.

Ręczne raportowanie

Hub jest dostępny jako Dock\Ray\State\HubInterface i jako publiczny serwis 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;
        }
    }
}

Globalne funkcje SDK też działają - bundle instaluje swój hub jako bieżący w czasie budowania kontenera.

Messenger i długo żyjące procesy

Hub jest singletonem kontenera, więc worker trzyma jednego klienta przez całe swoje życie. Wiadomości, na których worker sam padnie, są raportowane przez console.error; raportowanie per wiadomość wymaga własnego middleware Messengera wokół captureException().

Ochrona klucza prywatnego

Klucz prywatny jest sekretem projektu, a nie identyfikatorem. Trzymaj go w zmiennych środowiskowych, w menedżerze sekretów albo w konfiguracji serwera - nigdy w repozytorium, w logach, na zrzucie ekranu ani w kodzie wysyłanym do przeglądarki. Jeden projekt może mieć wiele kluczy, więc produkcja i środowisko testowe powinny dostać osobne: każdy odwołuje się niezależnie, bez przerywania raportowania z pozostałych. Podejrzenie ujawnienia klucza jest wystarczającym powodem, aby go odwołać i wygenerować nowy.

Czytaj dalej

Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.