feat: makes sentry more configurable

This commit is contained in:
Brock H Caldwell
2025-11-08 14:38:55 -06:00
parent 2315b995e0
commit 7dd40b4525
8 changed files with 47 additions and 10 deletions

1
.env
View File

@@ -61,6 +61,7 @@ NTFY_DSN=
###> sentry/sentry-symfony ###
SENTRY_DSN=
SENTRY_JS_URL=
###< sentry/sentry-symfony ###
# TMDB 'with_original_language' option

View File

@@ -5,18 +5,18 @@ when@prod:
options:
release: '%app.version%'
traces_sample_rate: 0
profiles_sample_rate: 0
traces_sample_rate: 1
profiles_sample_rate: 1
attach_stacktrace: true
# tracing:
# enabled: true
# dbal: # DB queries
# enabled: true
# cache: # cache pools
# enabled: true
# twig: # templating engine
# enabled: true
tracing:
enabled: true
dbal: # DB queries
enabled: true
cache: # cache pools
enabled: true
twig: # templating engine
enabled: true
services:
# (Optionally) Configure the breadcrumb handler as a service (needed for the breadcrumb Monolog handler)

View File

@@ -1,6 +1,7 @@
twig:
globals:
version: '%app.version%'
sentry_javascript_url: '%sentry.javascript_url%'
file_name_pattern: '*.twig'
date:
format: 'm/d/Y'

View File

@@ -48,6 +48,10 @@ parameters:
notification.transport: '%env(NOTIFICATION_TRANSPORT)%'
notification.ntfy.dsn: '%env(NTFY_DSN)%'
# Sentry
sentry.dsn: '%env(SENTRY_DSN)%'
sentry.javascript_url: '%env(SENTRY_JS_URL)%'
services:
# default configuration for services in *this* file
_defaults:

View File

@@ -53,6 +53,15 @@ final class ConfigResolver
#[Autowire(param: 'notification.ntfy.dsn')]
private ?string $notificationNtfyDsn = null,
#[Autowire(param: 'sentry.dsn')]
private ?string $sentryDsn = null,
#[Autowire(param: 'sentry.environment')]
private ?string $sentryEnvironment = null,
#[Autowire(param: 'sentry.javascript_url')]
private ?string $sentryJavascriptUrl = null,
) {}
public function validate(): bool
@@ -120,4 +129,13 @@ final class ConfigResolver
]
];
}
public function getSentryConfig()
{
return [
'dsn' => $this->sentryDsn,
'environment' => $this->sentryEnvironment,
'javascript_url' => $this->sentryJavascriptUrl,
];
}
}

View File

@@ -112,4 +112,12 @@ class UtilExtension
return new EpisodeIdDto($season, $episode);
}
#[AsTwigFunction('sentry_enabled')]
public function sentryEnabled(): bool
{
$sentryConfig = $this->config->getSentryConfig();
return $sentryConfig['javascript_url'] !== null &&
$sentryConfig['javascript_url'] !== '';
}
}

View File

@@ -12,6 +12,7 @@
{% block javascripts %}
{% block importmap %}{{ importmap('app') }}{% endblock %}
<script src="https://bugs.caldwell.digital/js-sdk-loader/8dddf7fb26fbec602ad212173a942450.min.js" crossorigin="anonymous"></script>
{% endblock %}
</head>
<body class="bg-cyan-950 flex flex-col h-full">

View File

@@ -12,6 +12,10 @@
{% block javascripts %}
{% block importmap %}{{ importmap('app') }}{% endblock %}
{% if sentry_enabled() %}
<script src="{{ sentry_javascript_url }}" crossorigin="anonymous"></script>
{% endif %}
<script src='https://cdn.jsdelivr.net/npm/fullcalendar@6.1.19/index.global.min.js'></script>
{% endblock %}
</head>