@danieljvdm/dev-kit 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/package.json +1 -1
- package/skill-sources.jsonc +6 -29
- package/skill-sources.lock.json +23 -109
- package/skills/animate/LICENSE +21 -0
- package/skills/animate/NOTICE +10 -0
- package/skills/animate/SKILL.md +34 -0
- package/skills/animate/references/gestures.md +27 -0
- package/skills/animate/references/glossary.md +136 -0
- package/skills/animate/references/implementation.md +22 -0
- package/skills/animate/references/opportunities.md +18 -0
- package/skills/animate/references/principles.md +48 -0
- package/skills/animate/references/review.md +19 -0
- package/skills/cloudflare-workers/LICENSE +202 -0
- package/skills/cloudflare-workers/NOTICE +9 -0
- package/skills/cloudflare-workers/SKILL.md +26 -0
- package/skills/cloudflare-workers/references/durable-objects.md +68 -0
- package/skills/cloudflare-workers/references/sandbox.md +48 -0
- package/skills/cloudflare-workers/references/workers.md +63 -0
- package/skills/cloudflare-workers/references/wrangler.md +56 -0
- package/skills/design-ui/LICENSE +21 -0
- package/skills/design-ui/NOTICE +8 -0
- package/skills/design-ui/SKILL.md +29 -0
- package/skills/design-ui/references/appearance.md +22 -0
- package/skills/design-ui/references/components.md +33 -0
- package/skills/design-ui/references/exploration.md +50 -0
- package/skills/design-ui/references/libraries.md +39 -0
- package/skills/design-ui/references/themes.md +23 -0
- package/skills/dev-kit/SKILL.md +19 -38
- package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
- package/skills/dev-kit/references/skills.md +2 -2
- package/skills/effect-development/SKILL.md +27 -0
- package/skills/effect-development/agents/openai.yaml +4 -0
- package/skills/effect-development/references/api/index.md +32 -0
- package/skills/effect-development/references/api/schema-codecs.md +15 -0
- package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
- package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
- package/skills/effect-development/references/atom/index.md +40 -0
- package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
- package/skills/effect-development/references/cli/index.md +39 -0
- package/skills/effect-development/references/setup.md +15 -0
- package/skills/open-pull-request/SKILL.md +11 -115
- package/skills/open-pull-request/agents/openai.yaml +3 -3
- package/skills/open-pull-request/references/evidence.md +22 -0
- package/skills/open-pull-request/references/explanation.md +21 -0
- package/skills/open-pull-request/references/publication.md +21 -0
- package/skills/sentry/LICENSE +202 -0
- package/skills/sentry/LICENSE-UPSTREAM +21 -0
- package/skills/sentry/NOTICE +14 -0
- package/skills/sentry/SKILL.md +33 -0
- package/skills/sentry/references/alert-payloads.md +105 -0
- package/skills/sentry/references/alerts.md +17 -0
- package/skills/sentry/references/artifacts.md +25 -0
- package/skills/sentry/references/auth-token.md +65 -0
- package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
- package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
- package/skills/sentry/references/concepts/crons.md +50 -0
- package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
- package/skills/sentry/references/concepts/errors.md +40 -0
- package/skills/sentry/references/concepts/logging.md +85 -0
- package/skills/sentry/references/concepts/metrics.md +49 -0
- package/skills/sentry/references/concepts/monitors.md +78 -0
- package/skills/sentry/references/concepts/profiling.md +38 -0
- package/skills/sentry/references/concepts/reduce-volume.md +49 -0
- package/skills/sentry/references/concepts/releases.md +43 -0
- package/skills/sentry/references/concepts/session-replay.md +35 -0
- package/skills/sentry/references/concepts/tracing.md +54 -0
- package/skills/sentry/references/concepts/user-feedback.md +36 -0
- package/skills/sentry/references/debug-artifacts/android.md +68 -0
- package/skills/sentry/references/debug-artifacts/apple.md +96 -0
- package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
- package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
- package/skills/sentry/references/debug-artifacts/index.md +75 -0
- package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
- package/skills/sentry/references/debug-artifacts/matching.md +73 -0
- package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
- package/skills/sentry/references/first-error-setup.md +25 -0
- package/skills/sentry/references/instrumentation.md +30 -0
- package/skills/sentry/references/issues.md +32 -0
- package/skills/sentry/references/new-project.md +17 -0
- package/skills/sentry/references/otel-exporter.md +30 -0
- package/skills/sentry/references/release-workflow.md +31 -0
- package/skills/sentry/references/releases/ci-pipeline.md +214 -0
- package/skills/sentry/references/releases/index.md +93 -0
- package/skills/sentry/references/releases/suspect-commits.md +155 -0
- package/skills/sentry/references/releases/tagging.md +131 -0
- package/skills/sentry/references/releases/troubleshooting.md +67 -0
- package/skills/sentry/references/sdks/android/crons.md +305 -0
- package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
- package/skills/sentry/references/sdks/android/index.md +748 -0
- package/skills/sentry/references/sdks/android/integrations.md +48 -0
- package/skills/sentry/references/sdks/android/logging.md +374 -0
- package/skills/sentry/references/sdks/android/metrics.md +288 -0
- package/skills/sentry/references/sdks/android/profiling.md +397 -0
- package/skills/sentry/references/sdks/android/session-replay.md +406 -0
- package/skills/sentry/references/sdks/android/tracing.md +861 -0
- package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
- package/skills/sentry/references/sdks/browser/index.md +714 -0
- package/skills/sentry/references/sdks/browser/logging.md +315 -0
- package/skills/sentry/references/sdks/browser/profiling.md +236 -0
- package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
- package/skills/sentry/references/sdks/browser/tracing.md +561 -0
- package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
- package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
- package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
- package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
- package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
- package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
- package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
- package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
- package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
- package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
- package/skills/sentry/references/sdks/cocoa/index.md +497 -0
- package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
- package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
- package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
- package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
- package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
- package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
- package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
- package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
- package/skills/sentry/references/sdks/dotnet/index.md +614 -0
- package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
- package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
- package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
- package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
- package/skills/sentry/references/sdks/elixir/crons.md +371 -0
- package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
- package/skills/sentry/references/sdks/elixir/index.md +383 -0
- package/skills/sentry/references/sdks/elixir/logging.md +239 -0
- package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
- package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
- package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
- package/skills/sentry/references/sdks/flutter/index.md +728 -0
- package/skills/sentry/references/sdks/flutter/logging.md +387 -0
- package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
- package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
- package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
- package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
- package/skills/sentry/references/sdks/go/crons.md +270 -0
- package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
- package/skills/sentry/references/sdks/go/index.md +324 -0
- package/skills/sentry/references/sdks/go/logging.md +354 -0
- package/skills/sentry/references/sdks/go/metrics.md +273 -0
- package/skills/sentry/references/sdks/go/profiling.md +46 -0
- package/skills/sentry/references/sdks/go/tracing.md +366 -0
- package/skills/sentry/references/sdks/index.md +41 -0
- package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
- package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
- package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
- package/skills/sentry/references/sdks/nestjs/index.md +699 -0
- package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
- package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
- package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
- package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
- package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
- package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
- package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
- package/skills/sentry/references/sdks/nextjs/index.md +491 -0
- package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
- package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
- package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
- package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
- package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
- package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
- package/skills/sentry/references/sdks/node/crons.md +432 -0
- package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
- package/skills/sentry/references/sdks/node/index.md +942 -0
- package/skills/sentry/references/sdks/node/logging.md +380 -0
- package/skills/sentry/references/sdks/node/metrics.md +278 -0
- package/skills/sentry/references/sdks/node/profiling.md +373 -0
- package/skills/sentry/references/sdks/node/tracing.md +878 -0
- package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
- package/skills/sentry/references/sdks/php/crons.md +265 -0
- package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
- package/skills/sentry/references/sdks/php/index.md +362 -0
- package/skills/sentry/references/sdks/php/laravel.md +542 -0
- package/skills/sentry/references/sdks/php/logging.md +242 -0
- package/skills/sentry/references/sdks/php/metrics.md +193 -0
- package/skills/sentry/references/sdks/php/profiling.md +115 -0
- package/skills/sentry/references/sdks/php/symfony.md +552 -0
- package/skills/sentry/references/sdks/php/tracing.md +516 -0
- package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
- package/skills/sentry/references/sdks/python/crons.md +218 -0
- package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
- package/skills/sentry/references/sdks/python/index.md +361 -0
- package/skills/sentry/references/sdks/python/logging.md +234 -0
- package/skills/sentry/references/sdks/python/metrics.md +154 -0
- package/skills/sentry/references/sdks/python/profiling.md +120 -0
- package/skills/sentry/references/sdks/python/tracing.md +364 -0
- package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
- package/skills/sentry/references/sdks/react/index.md +492 -0
- package/skills/sentry/references/sdks/react/logging.md +364 -0
- package/skills/sentry/references/sdks/react/profiling.md +322 -0
- package/skills/sentry/references/sdks/react/react-features.md +1272 -0
- package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
- package/skills/sentry/references/sdks/react/tracing.md +1415 -0
- package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
- package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
- package/skills/sentry/references/sdks/react-native/index.md +1030 -0
- package/skills/sentry/references/sdks/react-native/logging.md +444 -0
- package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
- package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
- package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
- package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
- package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
- package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
- package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
- package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
- package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
- package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
- package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
- package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
- package/skills/sentry/references/sdks/ruby/crons.md +184 -0
- package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
- package/skills/sentry/references/sdks/ruby/index.md +297 -0
- package/skills/sentry/references/sdks/ruby/logging.md +168 -0
- package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
- package/skills/sentry/references/sdks/ruby/migration.md +321 -0
- package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
- package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
- package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
- package/skills/sentry/references/sdks/svelte/index.md +467 -0
- package/skills/sentry/references/sdks/svelte/logging.md +344 -0
- package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
- package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
- package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
- package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
- package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
- package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
- package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
- package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
- package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
- package/skills/sentry/references/search-query-language.md +226 -0
- package/skills/sentry/references/semantics/angular.md +7 -0
- package/skills/sentry/references/semantics/app.md +28 -0
- package/skills/sentry/references/semantics/art.md +17 -0
- package/skills/sentry/references/semantics/aws.md +43 -0
- package/skills/sentry/references/semantics/browser.md +34 -0
- package/skills/sentry/references/semantics/cache.md +12 -0
- package/skills/sentry/references/semantics/client.md +8 -0
- package/skills/sentry/references/semantics/cloud.md +12 -0
- package/skills/sentry/references/semantics/cloudflare.md +23 -0
- package/skills/sentry/references/semantics/code.md +11 -0
- package/skills/sentry/references/semantics/culture.md +11 -0
- package/skills/sentry/references/semantics/db.md +21 -0
- package/skills/sentry/references/semantics/device.md +43 -0
- package/skills/sentry/references/semantics/error.md +7 -0
- package/skills/sentry/references/semantics/event.md +8 -0
- package/skills/sentry/references/semantics/exception.md +10 -0
- package/skills/sentry/references/semantics/faas.md +19 -0
- package/skills/sentry/references/semantics/file.md +8 -0
- package/skills/sentry/references/semantics/flag.md +7 -0
- package/skills/sentry/references/semantics/gcp.md +16 -0
- package/skills/sentry/references/semantics/gen_ai.md +53 -0
- package/skills/sentry/references/semantics/general.md +11 -0
- package/skills/sentry/references/semantics/graphql.md +9 -0
- package/skills/sentry/references/semantics/grpc.md +19 -0
- package/skills/sentry/references/semantics/http.md +34 -0
- package/skills/sentry/references/semantics/index.md +63 -0
- package/skills/sentry/references/semantics/jsonrpc.md +8 -0
- package/skills/sentry/references/semantics/jvm.md +12 -0
- package/skills/sentry/references/semantics/koa.md +7 -0
- package/skills/sentry/references/semantics/logger.md +7 -0
- package/skills/sentry/references/semantics/mcp.md +37 -0
- package/skills/sentry/references/semantics/mdc.md +7 -0
- package/skills/sentry/references/semantics/messaging.md +23 -0
- package/skills/sentry/references/semantics/middleware.md +7 -0
- package/skills/sentry/references/semantics/navigation.md +9 -0
- package/skills/sentry/references/semantics/nel.md +11 -0
- package/skills/sentry/references/semantics/network.md +17 -0
- package/skills/sentry/references/semantics/os.md +15 -0
- package/skills/sentry/references/semantics/otel.md +10 -0
- package/skills/sentry/references/semantics/params.md +7 -0
- package/skills/sentry/references/semantics/process.md +14 -0
- package/skills/sentry/references/semantics/react.md +7 -0
- package/skills/sentry/references/semantics/remix.md +7 -0
- package/skills/sentry/references/semantics/resource.md +7 -0
- package/skills/sentry/references/semantics/rpc.md +10 -0
- package/skills/sentry/references/semantics/score.md +10 -0
- package/skills/sentry/references/semantics/sentry.md +69 -0
- package/skills/sentry/references/semantics/server.md +8 -0
- package/skills/sentry/references/semantics/service.md +8 -0
- package/skills/sentry/references/semantics/session.md +7 -0
- package/skills/sentry/references/semantics/state.md +7 -0
- package/skills/sentry/references/semantics/thread.md +8 -0
- package/skills/sentry/references/semantics/timber.md +7 -0
- package/skills/sentry/references/semantics/trpc.md +8 -0
- package/skills/sentry/references/semantics/ui.md +18 -0
- package/skills/sentry/references/semantics/url.md +15 -0
- package/skills/sentry/references/semantics/user.md +17 -0
- package/skills/sentry/references/semantics/user_agent.md +7 -0
- package/skills/sentry/references/semantics/vercel.md +42 -0
- package/skills/sentry/references/setup-verification.md +39 -0
- package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
- package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
- package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
- package/skills/sentry/references/snapshots/index.md +19 -0
- package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
- package/skills/sentry/references/snapshots/snapshots.md +123 -0
- package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
- package/skills/testing/LICENSE +21 -0
- package/skills/testing/NOTICE +7 -0
- package/skills/testing/SKILL.md +13 -19
- package/skills/testing/agents/openai.yaml +1 -2
- package/skills/testing/references/selection.md +23 -0
- package/skills/testing/references/tdd.md +19 -0
- package/skills/testing/references/test-design.md +17 -0
- package/src/catalog.ts +1 -7
- package/skills/build-effect-apis/SKILL.md +0 -81
- package/skills/build-effect-apis/agents/openai.yaml +0 -4
- package/skills/build-effect-clis/SKILL.md +0 -92
- package/skills/build-effect-clis/agents/openai.yaml +0 -4
- package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
- package/skills/effect-atom-state/SKILL.md +0 -97
- package/skills/effect-atom-state/agents/openai.yaml +0 -4
- package/skills/effect-ts/SKILL.md +0 -35
- package/skills/effect-ts/agents/openai.yaml +0 -4
- /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
- /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
# Laravel — Sentry SDK Deep Dive
|
|
2
|
+
|
|
3
|
+
> Package: `sentry/sentry-laravel` · Requires `sentry/sentry ^4.21.0`\
|
|
4
|
+
> Laravel versions: `^6.0` through `^12.0` (Lumen supported)
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Installation & Setup
|
|
9
|
+
|
|
10
|
+
### Requirements
|
|
11
|
+
|
|
12
|
+
- PHP `^7.2 | ^8.0`
|
|
13
|
+
- Laravel `^6.0`–`^12.0`
|
|
14
|
+
- `zend.exception_ignore_args: Off` in `php.ini` (required for stack trace arguments)
|
|
15
|
+
|
|
16
|
+
### Install
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
composer require sentry/sentry-laravel
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Auto-registration via Laravel Package Discovery — no manual `config/app.php` entry
|
|
23
|
+
needed. Two service providers register automatically:
|
|
24
|
+
|
|
25
|
+
- `Sentry\Laravel\ServiceProvider`
|
|
26
|
+
- `Sentry\Laravel\Tracing\ServiceProvider`
|
|
27
|
+
|
|
28
|
+
### Step 1 — Hook Exception Handler (Laravel 11+)
|
|
29
|
+
|
|
30
|
+
In `bootstrap/app.php`:
|
|
31
|
+
|
|
32
|
+
```php
|
|
33
|
+
use Sentry\Laravel\Integration;
|
|
34
|
+
|
|
35
|
+
->withExceptions(function (Exceptions $exceptions) {
|
|
36
|
+
Integration::handles($exceptions);
|
|
37
|
+
})
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
For **Laravel 10 and earlier**, add to `app/Exceptions/Handler.php`:
|
|
41
|
+
|
|
42
|
+
```php
|
|
43
|
+
public function register(): void
|
|
44
|
+
{
|
|
45
|
+
$this->reportable(function (\Throwable $e) {
|
|
46
|
+
\Sentry\Laravel\Integration::captureUnhandledException($e);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Step 2 — Publish Config & Set DSN
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
php artisan sentry:publish --dsn=___PUBLIC_DSN___
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This creates `config/sentry.php` and writes `SENTRY_LARAVEL_DSN=your_dsn` to `.env`.
|
|
58
|
+
|
|
59
|
+
### Step 3 — Verify
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
php artisan sentry:test
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Or add a test route:
|
|
66
|
+
|
|
67
|
+
```php
|
|
68
|
+
Route::get('/debug-sentry', function () {
|
|
69
|
+
throw new Exception('My first Sentry error!');
|
|
70
|
+
});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Environment Variables
|
|
76
|
+
|
|
77
|
+
| Variable | Purpose | Notes |
|
|
78
|
+
| ----------------------------- | ---------------------------------- | ------------------------------------ |
|
|
79
|
+
| `SENTRY_LARAVEL_DSN` | Primary DSN | Takes priority over `SENTRY_DSN` |
|
|
80
|
+
| `SENTRY_DSN` | Generic DSN fallback | Used if `SENTRY_LARAVEL_DSN` not set |
|
|
81
|
+
| `SENTRY_RELEASE` | Release version string | Mapped to `release` option |
|
|
82
|
+
| `SENTRY_ENVIRONMENT` | Environment name | Falls back to `APP_ENV` if not set |
|
|
83
|
+
| `SENTRY_TRACES_SAMPLE_RATE` | Enable/configure tracing | Must be `> 0.0` to enable tracing |
|
|
84
|
+
| `SENTRY_PROFILES_SAMPLE_RATE` | Enable profiling | Relative to traces sample rate |
|
|
85
|
+
| `SENTRY_ENABLE_LOGS` | Enable structured Sentry Logs | `true` / `false` |
|
|
86
|
+
| `SENTRY_SEND_DEFAULT_PII` | Capture PII (IP, etc.) | `true` / `false` |
|
|
87
|
+
| `LOG_CHANNEL` | Laravel log channel | e.g., `stack` |
|
|
88
|
+
| `LOG_STACK` | Stack channels | e.g., `single,sentry_logs` |
|
|
89
|
+
| `LOG_LEVEL` | Log level threshold | e.g., `info` |
|
|
90
|
+
| `SENTRY_LOG_LEVEL` | Sentry-specific log level override | Defaults to `LOG_LEVEL` |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## `config/sentry.php` — Complete Options
|
|
95
|
+
|
|
96
|
+
### Root Options
|
|
97
|
+
|
|
98
|
+
| Key | Default | Description |
|
|
99
|
+
| ---------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------ |
|
|
100
|
+
| `dsn` | `env('SENTRY_LARAVEL_DSN', env('SENTRY_DSN'))` | Sentry DSN |
|
|
101
|
+
| `release` | `env('SENTRY_RELEASE')` | Release version |
|
|
102
|
+
| `environment` | `env('SENTRY_ENVIRONMENT')` | Falls back to `APP_ENV` |
|
|
103
|
+
| `sample_rate` | `1.0` | Error event sample rate (0.0–1.0) |
|
|
104
|
+
| `traces_sample_rate` | `null` | Transaction sample rate; enables tracing when set |
|
|
105
|
+
| `profiles_sample_rate` | `null` | Profile sample rate; relative to traces rate |
|
|
106
|
+
| `enable_logs` | `false` | Enable Sentry structured logs |
|
|
107
|
+
| `send_default_pii` | `false` | Capture PII (IP, cookies, headers) |
|
|
108
|
+
| `ignore_exceptions` | `[]` | Exception FQCNs to suppress |
|
|
109
|
+
| `ignore_transactions` | `['/up']` | Transaction names to suppress (health check) |
|
|
110
|
+
| `logs_channel_level` | `'debug'` | Min log level for the `sentry` log channel (Laravel-only, not forwarded to core SDK) |
|
|
111
|
+
|
|
112
|
+
### Breadcrumb Options
|
|
113
|
+
|
|
114
|
+
All controlled per-feature in the `breadcrumbs` sub-array:
|
|
115
|
+
|
|
116
|
+
| Key | ENV Variable | Default | What it captures |
|
|
117
|
+
| ---------------------------------- | ------------------------------------------------- | ------- | ------------------------------ |
|
|
118
|
+
| `breadcrumbs.logs` | `SENTRY_BREADCRUMBS_LOGS_ENABLED` | `true` | Log message breadcrumbs |
|
|
119
|
+
| `breadcrumbs.cache` | `SENTRY_BREADCRUMBS_CACHE_ENABLED` | `true` | Cache operation breadcrumbs |
|
|
120
|
+
| `breadcrumbs.livewire` | `SENTRY_BREADCRUMBS_LIVEWIRE_ENABLED` | `true` | Livewire breadcrumbs |
|
|
121
|
+
| `breadcrumbs.sql_queries` | `SENTRY_BREADCRUMBS_SQL_QUERIES_ENABLED` | `true` | SQL query breadcrumbs |
|
|
122
|
+
| `breadcrumbs.sql_bindings` | `SENTRY_BREADCRUMBS_SQL_BINDINGS_ENABLED` | `false` | Include SQL parameter bindings |
|
|
123
|
+
| `breadcrumbs.queue_info` | `SENTRY_BREADCRUMBS_QUEUE_INFO_ENABLED` | `true` | Queue job breadcrumbs |
|
|
124
|
+
| `breadcrumbs.command_info` | `SENTRY_BREADCRUMBS_COMMAND_JOBS_ENABLED` | `true` | Artisan command breadcrumbs |
|
|
125
|
+
| `breadcrumbs.http_client_requests` | `SENTRY_BREADCRUMBS_HTTP_CLIENT_REQUESTS_ENABLED` | `true` | HTTP client breadcrumbs |
|
|
126
|
+
| `breadcrumbs.notifications` | `SENTRY_BREADCRUMBS_NOTIFICATIONS_ENABLED` | `true` | Notification breadcrumbs |
|
|
127
|
+
|
|
128
|
+
### Tracing Options
|
|
129
|
+
|
|
130
|
+
| Key | ENV Variable | Default | Description |
|
|
131
|
+
| -------------------------------------- | ------------------------------------------- | ------- | ------------------------------------------------------------------------- |
|
|
132
|
+
| `tracing.queue_job_transactions` | `SENTRY_TRACE_QUEUE_ENABLED` | `true` | Queue jobs as root transactions |
|
|
133
|
+
| `tracing.queue_jobs` | `SENTRY_TRACE_QUEUE_JOBS_ENABLED` | `true` | Queue jobs as child spans |
|
|
134
|
+
| `tracing.sql_queries` | `SENTRY_TRACE_SQL_QUERIES_ENABLED` | `true` | SQL queries as spans |
|
|
135
|
+
| `tracing.sql_bindings` | `SENTRY_TRACE_SQL_BINDINGS_ENABLED` | `false` | Include SQL bindings in spans |
|
|
136
|
+
| `tracing.sql_origin` | `SENTRY_TRACE_SQL_ORIGIN_ENABLED` | `true` | Track origin of SQL queries |
|
|
137
|
+
| `tracing.sql_origin_threshold_ms` | `SENTRY_TRACE_SQL_ORIGIN_THRESHOLD_MS` | `100` | Only track origin above this ms |
|
|
138
|
+
| `tracing.views` | `SENTRY_TRACE_VIEWS_ENABLED` | `true` | Blade view rendering spans |
|
|
139
|
+
| `tracing.livewire` | `SENTRY_TRACE_LIVEWIRE_ENABLED` | `true` | Livewire component spans |
|
|
140
|
+
| `tracing.http_client_requests` | `SENTRY_TRACE_HTTP_CLIENT_REQUESTS_ENABLED` | `true` | HTTP client spans |
|
|
141
|
+
| `tracing.cache` | `SENTRY_TRACE_CACHE_ENABLED` | `true` | Cache operation spans |
|
|
142
|
+
| `tracing.redis_commands` | `SENTRY_TRACE_REDIS_COMMANDS` | `false` | Redis command spans |
|
|
143
|
+
| `tracing.redis_origin` | `SENTRY_TRACE_REDIS_ORIGIN_ENABLED` | `true` | Track Redis command origins |
|
|
144
|
+
| `tracing.notifications` | `SENTRY_TRACE_NOTIFICATIONS_ENABLED` | `true` | Notification sending spans |
|
|
145
|
+
| `tracing.missing_routes` | `SENTRY_TRACE_MISSING_ROUTES_ENABLED` | `false` | Track 404 routes as transactions |
|
|
146
|
+
| `tracing.continue_after_response` | `SENTRY_TRACE_CONTINUE_AFTER_RESPONSE` | `true` | Continue traces after response |
|
|
147
|
+
| `tracing.default_integrations` | `SENTRY_TRACE_DEFAULT_INTEGRATIONS_ENABLED` | `true` | Register default tracing integrations |
|
|
148
|
+
| `tracing.features.gen_ai` | `SENTRY_TRACE_GEN_AI_ENABLED` | `true` | Capture Laravel AI spans (requires `laravel/ai`, Sentry Laravel >=4.27.0) |
|
|
149
|
+
| `tracing.features.gen_ai_invoke_agent` | `SENTRY_TRACE_GEN_AI_INVOKE_AGENT_ENABLED` | `true` | Capture Laravel AI agent invocation spans |
|
|
150
|
+
| `tracing.features.gen_ai_chat` | `SENTRY_TRACE_GEN_AI_CHAT_ENABLED` | `true` | Capture Laravel AI chat/provider request spans |
|
|
151
|
+
| `tracing.features.gen_ai_execute_tool` | `SENTRY_TRACE_GEN_AI_EXECUTE_TOOL_ENABLED` | `true` | Capture Laravel AI tool execution spans |
|
|
152
|
+
| `tracing.features.gen_ai_embeddings` | `SENTRY_TRACE_GEN_AI_EMBEDDINGS_ENABLED` | `true` | Capture Laravel AI embedding spans |
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Auto-Instrumented Operations
|
|
157
|
+
|
|
158
|
+
The Laravel SDK auto-instruments the following (via `EventHandler` + feature
|
|
159
|
+
integrations):
|
|
160
|
+
|
|
161
|
+
| Operation | Span Op | Minimum Version |
|
|
162
|
+
| ---------------------------- | ----------------------------- | ----------------------------------------------- |
|
|
163
|
+
| HTTP request lifecycle | `http.server` | All |
|
|
164
|
+
| Database queries | `db.sql.query` | All |
|
|
165
|
+
| Database transactions | `db.transaction` | All |
|
|
166
|
+
| View rendering (Blade) | `view.render` | All |
|
|
167
|
+
| Queue job publishing | `queue.publish` | All |
|
|
168
|
+
| Queue job processing | `queue.process` | All |
|
|
169
|
+
| Cache operations | (cache spans) | Laravel ≥ v11.11.0 |
|
|
170
|
+
| HTTP Client requests | (http.client spans) | Laravel ≥ v8.45.0 |
|
|
171
|
+
| Redis operations | (redis spans) | All |
|
|
172
|
+
| Notifications | (notification spans) | All |
|
|
173
|
+
| Livewire components | (livewire spans) | Requires `livewire/livewire` |
|
|
174
|
+
| Lighthouse GraphQL | (graphql spans) | Requires `nuwave/lighthouse` |
|
|
175
|
+
| Folio routes | breadcrumb + transaction name | Requires `laravel/folio` |
|
|
176
|
+
| Filesystem disk operations | (file spans) | Opt-in, see below |
|
|
177
|
+
| Laravel AI agent invocations | `gen_ai.invoke_agent` | `sentry/sentry-laravel` >=4.27.0 + `laravel/ai` |
|
|
178
|
+
| Laravel AI chat requests | `gen_ai.chat` | `sentry/sentry-laravel` >=4.27.0 + `laravel/ai` |
|
|
179
|
+
| Laravel AI tool executions | `gen_ai.execute_tool` | `sentry/sentry-laravel` >=4.27.0 + `laravel/ai` |
|
|
180
|
+
| Laravel AI embeddings | `gen_ai.embeddings` | `sentry/sentry-laravel` >=4.27.0 + `laravel/ai` |
|
|
181
|
+
|
|
182
|
+
### Laravel AI Instrumentation
|
|
183
|
+
|
|
184
|
+
Laravel AI instrumentation auto-enables when `laravel/ai` is installed and tracing is
|
|
185
|
+
enabled. It captures agent invocations, provider chat requests, tool executions,
|
|
186
|
+
embeddings, token usage, provider/model metadata, and conversation IDs.
|
|
187
|
+
|
|
188
|
+
To capture prompts, responses, tool arguments, tool results, and embeddings input,
|
|
189
|
+
explicitly enable PII capture after confirming the application’s privacy requirements:
|
|
190
|
+
|
|
191
|
+
```ini
|
|
192
|
+
SENTRY_SEND_DEFAULT_PII=true
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
For setup and verification steps, read `./ai-monitoring.md`.
|
|
196
|
+
|
|
197
|
+
### Filesystem Disk Instrumentation (Opt-in)
|
|
198
|
+
|
|
199
|
+
```php
|
|
200
|
+
// config/filesystems.php — wrap ALL disks
|
|
201
|
+
'disks' => Sentry\Laravel\Features\Storage\Integration::configureDisks([
|
|
202
|
+
'local' => [
|
|
203
|
+
'driver' => 'local',
|
|
204
|
+
'root' => storage_path('app'),
|
|
205
|
+
],
|
|
206
|
+
's3' => [
|
|
207
|
+
'driver' => 's3',
|
|
208
|
+
// ...
|
|
209
|
+
],
|
|
210
|
+
], /* enableSpans: */ true, /* enableBreadcrumbs: */ true),
|
|
211
|
+
|
|
212
|
+
// Or wrap a single disk
|
|
213
|
+
's3' => Sentry\Laravel\Features\Storage\Integration::configureDisk('s3', [
|
|
214
|
+
// ... disk config ...
|
|
215
|
+
], /* enableSpans: */ true, /* enableBreadcrumbs: */ true),
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Middleware
|
|
221
|
+
|
|
222
|
+
Three middleware are auto-registered — no manual setup needed:
|
|
223
|
+
|
|
224
|
+
| Middleware | Purpose |
|
|
225
|
+
| ------------------------ | -------------------------------------------------------------------------- |
|
|
226
|
+
| `SetRequestMiddleware` | Converts and caches PSR-7 request early (prevents upload parsing failures) |
|
|
227
|
+
| `SetRequestIpMiddleware` | Sets request IP on Sentry scope |
|
|
228
|
+
| `FlushEventsMiddleware` | Flushes pending events in `terminate()` phase after response sent |
|
|
229
|
+
|
|
230
|
+
The tracing middleware (`Tracing\Middleware`) is auto-prepended via
|
|
231
|
+
`$httpKernel->prependMiddleware()` — it runs before all user middleware and records the
|
|
232
|
+
full boot time.
|
|
233
|
+
|
|
234
|
+
**FastCGI behavior:** On FastCGI, the terminate phase runs after the response is sent to
|
|
235
|
+
the client, so Sentry upload does not add user-visible latency.
|
|
236
|
+
On non-FastCGI (built-in server, RoadRunner), the response is delayed by the Sentry
|
|
237
|
+
upload — use a local Relay proxy in that case.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Log Channels
|
|
242
|
+
|
|
243
|
+
Laravel provides two separate Sentry log channel drivers:
|
|
244
|
+
|
|
245
|
+
### `sentry` channel — Error Events/Breadcrumbs (classic)
|
|
246
|
+
|
|
247
|
+
Sends log messages as Sentry error events or breadcrumbs.
|
|
248
|
+
|
|
249
|
+
```php
|
|
250
|
+
// config/logging.php
|
|
251
|
+
'channels' => [
|
|
252
|
+
'sentry' => [
|
|
253
|
+
'driver' => 'sentry',
|
|
254
|
+
'level' => env('LOG_LEVEL', 'error'),
|
|
255
|
+
'bubble' => true,
|
|
256
|
+
],
|
|
257
|
+
],
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### `sentry_logs` channel — Structured Sentry Logs (≥ 4.15.0)
|
|
261
|
+
|
|
262
|
+
Sends structured logs to the Sentry Logs product (not as error events).
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# .env
|
|
266
|
+
LOG_CHANNEL=stack
|
|
267
|
+
LOG_STACK=single,sentry_logs
|
|
268
|
+
SENTRY_ENABLE_LOGS=true
|
|
269
|
+
LOG_LEVEL=info
|
|
270
|
+
SENTRY_LOG_LEVEL=warning
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
```php
|
|
274
|
+
// config/logging.php (required for SDK <= 4.16.0; auto-registered in > 4.16.0)
|
|
275
|
+
'sentry_logs' => [
|
|
276
|
+
'driver' => 'sentry_logs',
|
|
277
|
+
'level' => env('LOG_LEVEL', 'info'),
|
|
278
|
+
],
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
```php
|
|
282
|
+
// Usage
|
|
283
|
+
use Illuminate\Support\Facades\Log;
|
|
284
|
+
|
|
285
|
+
Log::info('User logged in', ['user_id' => $user->id]);
|
|
286
|
+
Log::warning('User {id} failed to login.', ['id' => $user->id]);
|
|
287
|
+
Log::error('Something went wrong', ['user_id' => auth()->id(), 'action' => 'update_profile']);
|
|
288
|
+
|
|
289
|
+
// Send only to Sentry (bypass other channels)
|
|
290
|
+
Log::channel('sentry_logs')->error('This goes only to Sentry');
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**Auto-flush:** When `enable_logs` is `true`, the ServiceProvider registers a
|
|
294
|
+
terminating callback that flushes pending logs automatically.
|
|
295
|
+
|
|
296
|
+
**Troubleshooting Tinker:** `tinker` doesn’t trigger the normal request lifecycle —
|
|
297
|
+
flush manually:
|
|
298
|
+
|
|
299
|
+
```php
|
|
300
|
+
\Sentry\logger()->flush();
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Queue Integration
|
|
306
|
+
|
|
307
|
+
The queue integration is the most complete in any framework.
|
|
308
|
+
All of the following is automatic when `traces_sample_rate` is set:
|
|
309
|
+
|
|
310
|
+
### Distributed Tracing Across Queue
|
|
311
|
+
|
|
312
|
+
Trace context is automatically injected into job payloads using these keys:
|
|
313
|
+
|
|
314
|
+
```php
|
|
315
|
+
const QUEUE_PAYLOAD_BAGGAGE_DATA = 'sentry_baggage_data';
|
|
316
|
+
const QUEUE_PAYLOAD_TRACE_PARENT_DATA = 'sentry_trace_parent_data';
|
|
317
|
+
const QUEUE_PAYLOAD_PUBLISH_TIME = 'sentry_publish_time';
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
The worker side automatically reads these and calls `continueTrace()` — the queue job
|
|
321
|
+
transaction is linked to the originating HTTP request transaction, giving you end-to-end
|
|
322
|
+
distributed traces.
|
|
323
|
+
|
|
324
|
+
### Transaction Attributes
|
|
325
|
+
|
|
326
|
+
Queue process transactions include OpenTelemetry-aligned attributes:
|
|
327
|
+
|
|
328
|
+
| Attribute | Description |
|
|
329
|
+
| ----------------------------------- | ------------------------------------- |
|
|
330
|
+
| `messaging.system` | Queue driver (e.g., `redis`, `sqs`) |
|
|
331
|
+
| `messaging.destination.name` | Queue name |
|
|
332
|
+
| `messaging.message.id` | Job ID |
|
|
333
|
+
| `messaging.message.receive.latency` | Time from dispatch to processing (ms) |
|
|
334
|
+
|
|
335
|
+
### Config
|
|
336
|
+
|
|
337
|
+
```php
|
|
338
|
+
// config/sentry.php
|
|
339
|
+
'tracing' => [
|
|
340
|
+
'queue_job_transactions' => true, // Full distributed transaction per job
|
|
341
|
+
'queue_jobs' => true, // Child spans for jobs within a transaction
|
|
342
|
+
],
|
|
343
|
+
'breadcrumbs' => [
|
|
344
|
+
'queue_info' => true, // Job name/queue/attempts breadcrumbs
|
|
345
|
+
],
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## Cron Monitoring (Scheduled Tasks)
|
|
351
|
+
|
|
352
|
+
### `sentryMonitor()` Macro
|
|
353
|
+
|
|
354
|
+
Add to scheduled tasks in `routes/console.php` (Laravel 9+) or `app/Console/Kernel.php`:
|
|
355
|
+
|
|
356
|
+
```php
|
|
357
|
+
use Illuminate\Support\Facades\Schedule;
|
|
358
|
+
|
|
359
|
+
Schedule::command(SendEmailsCommand::class)
|
|
360
|
+
->everyHour()
|
|
361
|
+
->sentryMonitor();
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
With full configuration:
|
|
365
|
+
|
|
366
|
+
```php
|
|
367
|
+
Schedule::command(SendEmailsCommand::class)
|
|
368
|
+
->everyHour()
|
|
369
|
+
->sentryMonitor(
|
|
370
|
+
monitorSlug: null, // Auto-generated if null
|
|
371
|
+
checkInMargin: 5, // Minutes before check-in is considered missed
|
|
372
|
+
maxRuntime: 15, // Minutes before in-progress is marked timed out
|
|
373
|
+
failureIssueThreshold: 1, // Consecutive failures before creating issue
|
|
374
|
+
recoveryThreshold: 1, // Consecutive successes before resolving issue
|
|
375
|
+
updateMonitorConfig: false, // Set false to configure only in UI
|
|
376
|
+
);
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
**⚠️ Limitation:** Tasks using `between`, `unlessBetween`, `when`, and `skip` methods
|
|
380
|
+
are **not supported**. Use `cron('...')` for the schedule frequency instead.
|
|
381
|
+
|
|
382
|
+
### Automatic Slug Generation
|
|
383
|
+
|
|
384
|
+
When no slug is provided:
|
|
385
|
+
|
|
386
|
+
- Commands: `"scheduled_emails-send"` (from command name)
|
|
387
|
+
- Jobs: `"scheduled_send-email-job"` (from reversed class name)
|
|
388
|
+
|
|
389
|
+
### Automatic Transaction Tracing
|
|
390
|
+
|
|
391
|
+
`ConsoleSchedulingIntegration` also creates tracing transactions for scheduled tasks
|
|
392
|
+
automatically (no additional config beyond `traces_sample_rate`):
|
|
393
|
+
|
|
394
|
+
- `op: 'console.command.scheduled'`
|
|
395
|
+
- `source: TransactionSource::task()`
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## Artisan Commands
|
|
400
|
+
|
|
401
|
+
| Command | Description |
|
|
402
|
+
| -------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
403
|
+
| `php artisan sentry:publish --dsn=DSN` | Publish `config/sentry.php`, write DSN to `.env`, optionally enable PII/tracing, send test event |
|
|
404
|
+
| `php artisan sentry:test` | Send a test exception (and optionally a test transaction) to verify configuration |
|
|
405
|
+
| `php artisan about` | Displays Sentry version/config info (via `AboutCommandIntegration`) |
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## User Context
|
|
410
|
+
|
|
411
|
+
```php
|
|
412
|
+
\Sentry\configureScope(function (\Sentry\State\Scope $scope): void {
|
|
413
|
+
$scope->setUser([
|
|
414
|
+
'id' => auth()->user()->id,
|
|
415
|
+
'email' => auth()->user()->email,
|
|
416
|
+
]);
|
|
417
|
+
});
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
Requires `'send_default_pii' => true` in `config/sentry.php`.
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## Closures and Config Caching
|
|
425
|
+
|
|
426
|
+
`php artisan config:cache` will **fail** if `config/sentry.php` contains PHP closures
|
|
427
|
+
(e.g., inline `before_send` callbacks).
|
|
428
|
+
Use a static class method callable instead:
|
|
429
|
+
|
|
430
|
+
```php
|
|
431
|
+
// config/sentry.php — safe for config:cache
|
|
432
|
+
'before_send' => [App\Sentry\Callbacks::class, 'beforeSend'],
|
|
433
|
+
'before_send_log' => [App\Sentry\Callbacks::class, 'beforeSendLog'],
|
|
434
|
+
'before_send_metric' => [App\Sentry\Callbacks::class, 'beforeSendMetric'],
|
|
435
|
+
'traces_sampler' => [App\Sentry\Callbacks::class, 'tracesSampler'],
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
```php
|
|
439
|
+
// app/Sentry/Callbacks.php
|
|
440
|
+
namespace App\Sentry;
|
|
441
|
+
|
|
442
|
+
use Sentry\Event;
|
|
443
|
+
use Sentry\EventHint;
|
|
444
|
+
|
|
445
|
+
class Callbacks
|
|
446
|
+
{
|
|
447
|
+
public static function beforeSend(Event $event, ?EventHint $hint): ?Event
|
|
448
|
+
{
|
|
449
|
+
// return null to drop the event
|
|
450
|
+
return $event;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
public static function tracesSampler(\Sentry\Tracing\SamplingContext $context): float
|
|
454
|
+
{
|
|
455
|
+
return $context->getParentSampled() ? 1.0 : 0.25;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
## Lumen Support
|
|
463
|
+
|
|
464
|
+
```php
|
|
465
|
+
// bootstrap/app.php
|
|
466
|
+
$app->register(Sentry\Laravel\ServiceProvider::class);
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
Lumen does not auto-register service providers via Package Discovery.
|
|
470
|
+
No `artisan sentry:publish` — create `config/sentry.php` manually and configure it as a
|
|
471
|
+
Lumen config file:
|
|
472
|
+
|
|
473
|
+
```php
|
|
474
|
+
$app->configure('sentry');
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
## Laravel Octane (Long-Running Server)
|
|
480
|
+
|
|
481
|
+
When using Laravel Octane (Swoole/RoadRunner/FrankenPHP), requests are handled in
|
|
482
|
+
long-lived workers. Sentry scope must be isolated per request:
|
|
483
|
+
|
|
484
|
+
```php
|
|
485
|
+
// The SDK automatically handles this via context isolation
|
|
486
|
+
// when the Octane integration is active
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
**⚠️ Important:** If using `withScope()` / `configureScope()` for per-request context,
|
|
490
|
+
ensure you’re using `withScope()` (not `configureScope()`) in Octane environments —
|
|
491
|
+
`configureScope()` persists across requests in long-running workers.
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## Feature Flags (Laravel Pennant)
|
|
496
|
+
|
|
497
|
+
The `PennantIntegration` auto-records Pennant feature flag evaluations:
|
|
498
|
+
|
|
499
|
+
```php
|
|
500
|
+
use Laravel\Pennant\Feature;
|
|
501
|
+
|
|
502
|
+
// Checked features are automatically added as feature flags in Sentry
|
|
503
|
+
$value = Feature::value('billing-v2');
|
|
504
|
+
$active = Feature::active('new-onboarding');
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
No configuration needed — enabled automatically when `laravel/pennant` is installed.
|
|
508
|
+
|
|
509
|
+
---
|
|
510
|
+
|
|
511
|
+
## Complete `.env` Reference
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
# Required
|
|
515
|
+
SENTRY_LARAVEL_DSN=https://examplePublicKey@o0.ingest.sentry.io/0
|
|
516
|
+
|
|
517
|
+
# Release & environment
|
|
518
|
+
SENTRY_RELEASE=1.0.0
|
|
519
|
+
SENTRY_ENVIRONMENT=production # defaults to APP_ENV
|
|
520
|
+
|
|
521
|
+
# Performance
|
|
522
|
+
SENTRY_TRACES_SAMPLE_RATE=0.1 # 10% of transactions
|
|
523
|
+
SENTRY_PROFILES_SAMPLE_RATE=0.1 # 10% of traced transactions
|
|
524
|
+
|
|
525
|
+
# Logging
|
|
526
|
+
SENTRY_ENABLE_LOGS=true
|
|
527
|
+
LOG_CHANNEL=stack
|
|
528
|
+
LOG_STACK=single,sentry_logs
|
|
529
|
+
LOG_LEVEL=info
|
|
530
|
+
SENTRY_LOG_LEVEL=warning
|
|
531
|
+
|
|
532
|
+
# Privacy
|
|
533
|
+
SENTRY_SEND_DEFAULT_PII=false
|
|
534
|
+
|
|
535
|
+
# Breadcrumb toggles (all default true)
|
|
536
|
+
SENTRY_BREADCRUMBS_SQL_BINDINGS_ENABLED=false
|
|
537
|
+
SENTRY_BREADCRUMBS_CACHE_ENABLED=true
|
|
538
|
+
|
|
539
|
+
# Tracing toggles
|
|
540
|
+
SENTRY_TRACE_REDIS_COMMANDS=false
|
|
541
|
+
SENTRY_TRACE_MISSING_ROUTES_ENABLED=false
|
|
542
|
+
```
|