@danieljvdm/dev-kit 1.0.2 → 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 +2 -33
- package/skill-sources.lock.json +15 -117
- 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 +10 -70
- 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,556 @@
|
|
|
1
|
+
# Logging — Sentry .NET SDK
|
|
2
|
+
|
|
3
|
+
> **Minimum SDK: `Sentry` ≥ 6.0.0** for the stable native `SentrySdk.Logger` +
|
|
4
|
+
> `EnableLogs` (shipped experimental behind `options.Experimental` in 5.14.0–5.x)\
|
|
5
|
+
> Integration packages (`Sentry.Extensions.Logging`, `Sentry.Serilog`, `Sentry.NLog`,
|
|
6
|
+
> `Sentry.Log4Net`) are long-established\
|
|
7
|
+
> Native structured logs forwarded through integrations: requires SDK ≥ 6.0.0, and only
|
|
8
|
+
> for `Sentry.Extensions.Logging`, `Sentry.AspNetCore`, `Sentry.Maui`,
|
|
9
|
+
> `Sentry.Google.Cloud.Functions`, and `Sentry.Serilog` (NLog and log4net do **not**
|
|
10
|
+
> forward structured logs)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Enabling Native Structured Logs
|
|
15
|
+
|
|
16
|
+
`EnableLogs` must be set to `true` — logging is **disabled by default**:
|
|
17
|
+
|
|
18
|
+
```csharp
|
|
19
|
+
SentrySdk.Init(options =>
|
|
20
|
+
{
|
|
21
|
+
options.Dsn = "https://examplePublicKey@o0.ingest.sentry.io/0";
|
|
22
|
+
options.EnableLogs = true; // Required — logs are silently no-ops without this
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Without `EnableLogs = true`, all `SentrySdk.Logger.*` calls are silently discarded.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Native Logger API — Six Levels
|
|
31
|
+
|
|
32
|
+
The native logger type is `SentryStructuredLogger`, accessed via `SentrySdk.Logger`:
|
|
33
|
+
|
|
34
|
+
```csharp
|
|
35
|
+
SentrySdk.Logger.LogTrace("Entering method Foo");
|
|
36
|
+
SentrySdk.Logger.LogDebug("Loaded {0} items", itemCount);
|
|
37
|
+
SentrySdk.Logger.LogInfo("Order created successfully");
|
|
38
|
+
SentrySdk.Logger.LogWarning("Cache miss for key {0}", cacheKey);
|
|
39
|
+
SentrySdk.Logger.LogError("A {0} error occurred", "critical");
|
|
40
|
+
SentrySdk.Logger.LogFatal("Unrecoverable error — shutting down");
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
| Level | Method | Typical Use |
|
|
44
|
+
| --------- | -------------- | -------------------------------------------------------------------- |
|
|
45
|
+
| `Trace` | `LogTrace()` | Ultra-granular method entry/exit; high-volume — filter in production |
|
|
46
|
+
| `Debug` | `LogDebug()` | Development diagnostics, cache hits/misses |
|
|
47
|
+
| `Info` | `LogInfo()` | Normal business milestones, confirmations |
|
|
48
|
+
| `Warning` | `LogWarning()` | Degraded state, approaching limits, recoverable issues |
|
|
49
|
+
| `Error` | `LogError()` | Failures requiring attention |
|
|
50
|
+
| `Fatal` | `LogFatal()` | Critical failures, system unavailable |
|
|
51
|
+
|
|
52
|
+
### Attaching Custom Attributes
|
|
53
|
+
|
|
54
|
+
Use the lambda overload to attach typed key-value attributes to a log entry:
|
|
55
|
+
|
|
56
|
+
```csharp
|
|
57
|
+
SentrySdk.Logger.LogWarning(static log =>
|
|
58
|
+
{
|
|
59
|
+
log.SetAttribute("request.id", 12345);
|
|
60
|
+
log.SetAttribute("user.tier", "premium");
|
|
61
|
+
log.SetAttribute("is.retried", true);
|
|
62
|
+
}, "Payment declined for order {0}", orderId);
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Supported Attribute Value Types
|
|
66
|
+
|
|
67
|
+
| Category | Types |
|
|
68
|
+
| -------------- | ----------------------------------------------------------------- |
|
|
69
|
+
| Textual | `string`, `char` |
|
|
70
|
+
| Logical | `bool` |
|
|
71
|
+
| Integral | `sbyte`, `byte`, `short`, `ushort`, `int`, `uint`, `long`, `nint` |
|
|
72
|
+
| Floating-point | `float`, `double` |
|
|
73
|
+
| Other | Any type via `ToString()` fallback |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Log Filtering — `SetBeforeSendLog`
|
|
78
|
+
|
|
79
|
+
Use `SetBeforeSendLog` to modify or drop logs before transmission.
|
|
80
|
+
Return `null` to discard:
|
|
81
|
+
|
|
82
|
+
```csharp
|
|
83
|
+
SentrySdk.Init(options =>
|
|
84
|
+
{
|
|
85
|
+
options.Dsn = "https://...@sentry.io/...";
|
|
86
|
+
options.EnableLogs = true;
|
|
87
|
+
|
|
88
|
+
options.SetBeforeSendLog(static log =>
|
|
89
|
+
{
|
|
90
|
+
// Drop all Info and Trace logs in production
|
|
91
|
+
if (log.Level is SentryLogLevel.Info or SentryLogLevel.Trace)
|
|
92
|
+
return null;
|
|
93
|
+
|
|
94
|
+
// Drop noisy health-check messages
|
|
95
|
+
if (log.Message?.Contains("/health") == true)
|
|
96
|
+
return null;
|
|
97
|
+
|
|
98
|
+
// Enrich surviving logs
|
|
99
|
+
log.SetAttribute("app.version", "2.1.0");
|
|
100
|
+
|
|
101
|
+
return log;
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### The `SentryLog` Object
|
|
107
|
+
|
|
108
|
+
| Member | Type | Description |
|
|
109
|
+
| ------------------- | ---------------- | ----------------------------------------- |
|
|
110
|
+
| `Timestamp` | `DateTimeOffset` | When the log was created |
|
|
111
|
+
| `TraceId` | `SentryId` | Active trace ID — links log to a trace |
|
|
112
|
+
| `SpanId` | `SpanId?` | Active span ID — links log to a span |
|
|
113
|
+
| `Level` | `SentryLogLevel` | Trace, Debug, Info, Warning, Error, Fatal |
|
|
114
|
+
| `Message` | `string` | Formatted log message |
|
|
115
|
+
| `Template` | `string?` | Original message template (if structured) |
|
|
116
|
+
| `Parameters` | `ImmutableArray` | Template parameters |
|
|
117
|
+
| `TryGetAttribute()` | method | Read an attribute |
|
|
118
|
+
| `SetAttribute()` | method | Write/modify an attribute |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Automatically Attached Attributes
|
|
123
|
+
|
|
124
|
+
These are added by the SDK to every log without any configuration:
|
|
125
|
+
|
|
126
|
+
| Attribute Key | Source |
|
|
127
|
+
| ------------------------------------ | ------------------------------------------------------------------------ |
|
|
128
|
+
| `environment` | SDK config |
|
|
129
|
+
| `release` | SDK config |
|
|
130
|
+
| `sdk.name`, `sdk.version` | SDK internals |
|
|
131
|
+
| `message.template` | Message template |
|
|
132
|
+
| `message.parameter.0`, `.1`, … | Template parameters |
|
|
133
|
+
| `server.address` | Host info (requires `SendDefaultPii = true` or an explicit `ServerName`) |
|
|
134
|
+
| `user.id`, `user.name`, `user.email` | Active scope user (attached whenever the scope’s `User` has values) |
|
|
135
|
+
| `origin` | Integration that created the log |
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Integration: Microsoft.Extensions.Logging (ILogger)
|
|
140
|
+
|
|
141
|
+
### Install
|
|
142
|
+
|
|
143
|
+
```shell
|
|
144
|
+
dotnet add package Sentry.Extensions.Logging
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### What it does
|
|
148
|
+
|
|
149
|
+
The MEL integration provides **three capabilities** simultaneously:
|
|
150
|
+
|
|
151
|
+
1. Stores log messages as **breadcrumbs** (attached to the next error event as context)
|
|
152
|
+
2. Sends logs at or above the event threshold as **Sentry error events**
|
|
153
|
+
3. Forwards logs as **native Sentry structured logs** (SDK ≥ 6.0.0)
|
|
154
|
+
|
|
155
|
+
### ASP.NET Core / Generic Host Setup (Recommended)
|
|
156
|
+
|
|
157
|
+
```csharp
|
|
158
|
+
// Program.cs
|
|
159
|
+
var builder = WebApplication.CreateBuilder(args);
|
|
160
|
+
|
|
161
|
+
builder.Logging.AddSentry(o =>
|
|
162
|
+
{
|
|
163
|
+
o.Dsn = "https://...@sentry.io/...";
|
|
164
|
+
o.MinimumBreadcrumbLevel = LogLevel.Debug; // default: Information
|
|
165
|
+
o.MinimumEventLevel = LogLevel.Error; // default: Error
|
|
166
|
+
o.InitializeSdk = true; // set false if using SentrySdk.Init elsewhere
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Or configure via `appsettings.json`:
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"Sentry": {
|
|
175
|
+
"Dsn": "https://...@sentry.io/...",
|
|
176
|
+
"MinimumBreadcrumbLevel": "Information",
|
|
177
|
+
"MinimumEventLevel": "Error",
|
|
178
|
+
"SendDefaultPii": true,
|
|
179
|
+
"MaxBreadcrumbs": 100
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
```csharp
|
|
185
|
+
builder.Logging.AddSentry(); // reads Sentry section from appsettings.json
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Direct Setup (no DI)
|
|
189
|
+
|
|
190
|
+
```csharp
|
|
191
|
+
var loggerFactory = LoggerFactory.Create(logging =>
|
|
192
|
+
{
|
|
193
|
+
logging.AddSentry(o => o.Dsn = "https://...@sentry.io/...");
|
|
194
|
+
});
|
|
195
|
+
ILogger logger = loggerFactory.CreateLogger<MyClass>();
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Usage
|
|
199
|
+
|
|
200
|
+
Once configured, use standard `ILogger<T>` — no Sentry-specific code required:
|
|
201
|
+
|
|
202
|
+
```csharp
|
|
203
|
+
public class OrderService
|
|
204
|
+
{
|
|
205
|
+
private readonly ILogger<OrderService> _logger;
|
|
206
|
+
|
|
207
|
+
public OrderService(ILogger<OrderService> logger) => _logger = logger;
|
|
208
|
+
|
|
209
|
+
public async Task ProcessOrderAsync(int orderId)
|
|
210
|
+
{
|
|
211
|
+
_logger.LogInformation("Processing order {OrderId}", orderId); // → breadcrumb
|
|
212
|
+
|
|
213
|
+
try
|
|
214
|
+
{
|
|
215
|
+
await _paymentService.ChargeAsync(orderId);
|
|
216
|
+
_logger.LogInformation("Order {OrderId} paid successfully", orderId);
|
|
217
|
+
}
|
|
218
|
+
catch (Exception ex)
|
|
219
|
+
{
|
|
220
|
+
_logger.LogError(ex, "Failed to process order {OrderId}", orderId); // → Sentry event
|
|
221
|
+
throw;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Configuration Options
|
|
228
|
+
|
|
229
|
+
| Option | Type | Default | Description |
|
|
230
|
+
| ------------------------ | ---------------------- | ------------- | --------------------------------------------------------------------------------------------------- |
|
|
231
|
+
| `MinimumBreadcrumbLevel` | `LogLevel` | `Information` | Threshold for breadcrumb storage |
|
|
232
|
+
| `MinimumEventLevel` | `LogLevel` | `Error` | Threshold for sending Sentry error events |
|
|
233
|
+
| `InitializeSdk` | `bool` | `true` | Auto-init SDK. Set `false` when using `SentrySdk.Init` |
|
|
234
|
+
| `AddLogEntryFilter(...)` | method | — | Register a custom `ILogEntryFilter` for pre-processing (the underlying `Filters` array is internal) |
|
|
235
|
+
| `TagFilters` | `IList<StringOrRegex>` | — | Inherited from core `SentryOptions`; drops tags whose key matches by substring or regex |
|
|
236
|
+
|
|
237
|
+
### Important Behavior Notes
|
|
238
|
+
|
|
239
|
+
- **Breadcrumb cascade**: A `LogError` event includes ALL breadcrumbs accumulated since
|
|
240
|
+
the last event — so the full Info/Warning/Error history is attached.
|
|
241
|
+
- **Self-filtering**: Log entries whose category name is `"Sentry"` or starts with
|
|
242
|
+
`"Sentry."` are excluded to prevent infinite loops.
|
|
243
|
+
- **Single init**: Set `InitializeSdk = false` if calling `SentrySdk.Init()` elsewhere
|
|
244
|
+
in your startup.
|
|
245
|
+
- **Empty DSN** disables the SDK entirely.
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Integration: Serilog
|
|
250
|
+
|
|
251
|
+
### Install
|
|
252
|
+
|
|
253
|
+
```shell
|
|
254
|
+
dotnet add package Sentry.Serilog
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### What it does
|
|
258
|
+
|
|
259
|
+
Same three capabilities as MEL: breadcrumbs, Sentry error events, and native structured
|
|
260
|
+
logs.
|
|
261
|
+
|
|
262
|
+
### Basic Setup (Serilog initializes Sentry)
|
|
263
|
+
|
|
264
|
+
```csharp
|
|
265
|
+
Log.Logger = new LoggerConfiguration()
|
|
266
|
+
.MinimumLevel.Debug()
|
|
267
|
+
.WriteTo.Sentry(o =>
|
|
268
|
+
{
|
|
269
|
+
o.Dsn = "https://...@sentry.io/...";
|
|
270
|
+
o.MinimumBreadcrumbLevel = LogEventLevel.Debug; // default: Information
|
|
271
|
+
o.MinimumEventLevel = LogEventLevel.Warning; // default: Error
|
|
272
|
+
})
|
|
273
|
+
.WriteTo.Console()
|
|
274
|
+
.CreateLogger();
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Setup (Sentry initialized separately)
|
|
278
|
+
|
|
279
|
+
```csharp
|
|
280
|
+
SentrySdk.Init(o => o.Dsn = "...");
|
|
281
|
+
|
|
282
|
+
Log.Logger = new LoggerConfiguration()
|
|
283
|
+
.WriteTo.Sentry(o =>
|
|
284
|
+
{
|
|
285
|
+
o.InitializeSdk = false; // ← avoid double-init
|
|
286
|
+
o.MinimumBreadcrumbLevel = LogEventLevel.Information;
|
|
287
|
+
o.MinimumEventLevel = LogEventLevel.Error;
|
|
288
|
+
})
|
|
289
|
+
.CreateLogger();
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### ASP.NET Core with Serilog
|
|
293
|
+
|
|
294
|
+
```csharp
|
|
295
|
+
builder.Host.UseSerilog((ctx, cfg) =>
|
|
296
|
+
{
|
|
297
|
+
cfg.ReadFrom.Configuration(ctx.Configuration)
|
|
298
|
+
.WriteTo.Sentry(o =>
|
|
299
|
+
{
|
|
300
|
+
o.Dsn = ctx.Configuration["Sentry:Dsn"];
|
|
301
|
+
o.MinimumBreadcrumbLevel = LogEventLevel.Debug;
|
|
302
|
+
o.MinimumEventLevel = LogEventLevel.Error;
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Usage
|
|
308
|
+
|
|
309
|
+
```csharp
|
|
310
|
+
var log = Log.ForContext<OrderService>();
|
|
311
|
+
|
|
312
|
+
log.Information("Processing order {OrderId} for {CustomerId}", orderId, customerId); // → breadcrumb
|
|
313
|
+
log.Error(ex, "Payment failed for order {OrderId}", orderId); // → Sentry event
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### Configuration Options
|
|
317
|
+
|
|
318
|
+
| Option | Default | Description |
|
|
319
|
+
| ------------------------ | ------------- | --------------------------------------- |
|
|
320
|
+
| `MinimumBreadcrumbLevel` | `Information` | Minimum `LogEventLevel` for breadcrumbs |
|
|
321
|
+
| `MinimumEventLevel` | `Error` | Minimum level for Sentry error events |
|
|
322
|
+
| `InitializeSdk` | `true` | Whether this sink initializes the SDK |
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Integration: NLog
|
|
327
|
+
|
|
328
|
+
### Install
|
|
329
|
+
|
|
330
|
+
```shell
|
|
331
|
+
dotnet add package Sentry.NLog
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Code-Based Configuration
|
|
335
|
+
|
|
336
|
+
```csharp
|
|
337
|
+
LogManager.Configuration = new LoggingConfiguration();
|
|
338
|
+
|
|
339
|
+
LogManager.Configuration.AddSentry(options =>
|
|
340
|
+
{
|
|
341
|
+
options.Dsn = "https://...@sentry.io/...";
|
|
342
|
+
options.Layout = "${message}";
|
|
343
|
+
options.BreadcrumbLayout = "${logger}: ${message}";
|
|
344
|
+
options.MinimumBreadcrumbLevel = LogLevel.Debug; // default: Info
|
|
345
|
+
options.MinimumEventLevel = LogLevel.Error; // default: Error
|
|
346
|
+
options.AddTag("logger", "${logger}");
|
|
347
|
+
options.IgnoreEventsWithNoException = false;
|
|
348
|
+
options.IncludeEventPropertiesAsTags = true;
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
LogManager.ReconfigExistingLoggers();
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### XML Configuration (nlog.config)
|
|
355
|
+
|
|
356
|
+
```xml
|
|
357
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
|
358
|
+
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
|
|
359
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
360
|
+
<extensions>
|
|
361
|
+
<add assembly="Sentry.NLog"/>
|
|
362
|
+
</extensions>
|
|
363
|
+
|
|
364
|
+
<targets>
|
|
365
|
+
<target xsi:type="Sentry"
|
|
366
|
+
name="sentry"
|
|
367
|
+
dsn="https://...@sentry.io/..."
|
|
368
|
+
minimumBreadcrumbLevel="Debug"
|
|
369
|
+
minimumEventLevel="Error"
|
|
370
|
+
layout="${message}"
|
|
371
|
+
breadcrumbLayout="${logger}: ${message}"
|
|
372
|
+
includeEventPropertiesAsTags="true"
|
|
373
|
+
ignoreEventsWithNoException="false">
|
|
374
|
+
<tag name="logger" layout="${logger}"/>
|
|
375
|
+
</target>
|
|
376
|
+
</targets>
|
|
377
|
+
|
|
378
|
+
<rules>
|
|
379
|
+
<!-- Set minlevel LOWER than breadcrumbLevel so SentryTarget sees all entries -->
|
|
380
|
+
<logger name="*" minlevel="Debug" writeTo="sentry"/>
|
|
381
|
+
</rules>
|
|
382
|
+
</nlog>
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### Usage
|
|
386
|
+
|
|
387
|
+
```csharp
|
|
388
|
+
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
|
389
|
+
|
|
390
|
+
public void ProcessOrder(int orderId)
|
|
391
|
+
{
|
|
392
|
+
Logger.Info("Processing order {orderId}", orderId); // → breadcrumb
|
|
393
|
+
|
|
394
|
+
try { /* ... */ }
|
|
395
|
+
catch (Exception ex)
|
|
396
|
+
{
|
|
397
|
+
Logger.Error(ex, "Failed to process order {orderId}", orderId); // → Sentry event
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### Configuration Options
|
|
403
|
+
|
|
404
|
+
| Option | Default | Description |
|
|
405
|
+
| ------------------------------- | ------- | ----------------------------------------------- |
|
|
406
|
+
| `MinimumBreadcrumbLevel` | `Info` | Threshold for breadcrumb storage |
|
|
407
|
+
| `MinimumEventLevel` | `Error` | Threshold for Sentry error events |
|
|
408
|
+
| `InitializeSdk` | `true` | Auto-init SDK when DSN provided |
|
|
409
|
+
| `IgnoreEventsWithNoException` | `false` | Skip entries with no attached exception |
|
|
410
|
+
| `IncludeEventPropertiesAsTags` | `false` | Forward NLog properties as Sentry tags |
|
|
411
|
+
| `IncludeEventDataOnBreadcrumbs` | `false` | Attach event property data to breadcrumbs |
|
|
412
|
+
| `BreadcrumbLayout` | — | NLog layout string for breadcrumb text |
|
|
413
|
+
| `Layout` | — | NLog layout string for event message |
|
|
414
|
+
| `Tags` | — | Additional static tags attached to all messages |
|
|
415
|
+
|
|
416
|
+
### ⚠️ Critical NLog Detail
|
|
417
|
+
|
|
418
|
+
The `SentryTarget` must receive **all** log entries to correctly classify them as
|
|
419
|
+
breadcrumbs vs events.
|
|
420
|
+
Configure NLog’s `minlevel` **lower** than `MinimumBreadcrumbLevel`:
|
|
421
|
+
|
|
422
|
+
```xml
|
|
423
|
+
<!-- If MinimumBreadcrumbLevel = Info, set minlevel = Debug or Trace -->
|
|
424
|
+
<logger name="*" minlevel="Debug" writeTo="sentry"/>
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## Integration: log4net
|
|
430
|
+
|
|
431
|
+
### Install
|
|
432
|
+
|
|
433
|
+
```shell
|
|
434
|
+
dotnet add package Sentry.Log4Net
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
### XML Configuration (`app.config` / `web.config`)
|
|
438
|
+
|
|
439
|
+
```xml
|
|
440
|
+
<configuration>
|
|
441
|
+
<configSections>
|
|
442
|
+
<section name="log4net"
|
|
443
|
+
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
|
|
444
|
+
</configSections>
|
|
445
|
+
|
|
446
|
+
<log4net>
|
|
447
|
+
<appender name="SentryAppender" type="Sentry.Log4Net.SentryAppender, Sentry.Log4Net">
|
|
448
|
+
<Dsn value="https://...@sentry.io/..."/>
|
|
449
|
+
<SendIdentity value="true"/> <!-- send log4net Identity as Sentry user.id -->
|
|
450
|
+
<threshold value="INFO"/> <!-- minimum level for this appender -->
|
|
451
|
+
</appender>
|
|
452
|
+
|
|
453
|
+
<root>
|
|
454
|
+
<level value="DEBUG"/>
|
|
455
|
+
<appender-ref ref="SentryAppender"/>
|
|
456
|
+
</root>
|
|
457
|
+
</log4net>
|
|
458
|
+
</configuration>
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
### Programmatic Setup (for full SDK control)
|
|
462
|
+
|
|
463
|
+
The XML appender supports only a subset of Sentry options.
|
|
464
|
+
For full control, init the SDK separately and omit the `Dsn` element to skip auto-init:
|
|
465
|
+
|
|
466
|
+
```csharp
|
|
467
|
+
// Startup code
|
|
468
|
+
SentrySdk.Init(options =>
|
|
469
|
+
{
|
|
470
|
+
options.Dsn = "https://...@sentry.io/...";
|
|
471
|
+
options.Release = "my-app@1.0.0";
|
|
472
|
+
options.TracesSampleRate = 0.1;
|
|
473
|
+
});
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
```xml
|
|
477
|
+
<!-- In app.config — no <Dsn> element means SDK won't be re-initialized -->
|
|
478
|
+
<appender name="SentryAppender" type="Sentry.Log4Net.SentryAppender, Sentry.Log4Net">
|
|
479
|
+
<SendIdentity value="true"/>
|
|
480
|
+
<threshold value="INFO"/>
|
|
481
|
+
</appender>
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### Usage
|
|
485
|
+
|
|
486
|
+
```csharp
|
|
487
|
+
private static readonly ILog Logger = LogManager.GetLogger(typeof(MyClass));
|
|
488
|
+
|
|
489
|
+
Logger.Info("Processing started"); // → breadcrumb
|
|
490
|
+
Logger.Warn("Low disk space warning"); // → breadcrumb
|
|
491
|
+
Logger.Error("DB connection failed"); // → Sentry event
|
|
492
|
+
Logger.Fatal("Application crash", ex); // → Sentry event
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### Key Appender Options
|
|
496
|
+
|
|
497
|
+
| Option | Description |
|
|
498
|
+
| -------------- | --------------------------------------- |
|
|
499
|
+
| `Dsn` | Auto-initializes SDK when provided |
|
|
500
|
+
| `SendIdentity` | Reports log4net `Identity` as `user.id` |
|
|
501
|
+
| `threshold` | Minimum log4net level for this appender |
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## Log-to-Trace Correlation
|
|
506
|
+
|
|
507
|
+
Every log entry from any integration automatically carries the active trace and span
|
|
508
|
+
IDs:
|
|
509
|
+
|
|
510
|
+
| Field | Description |
|
|
511
|
+
| --------- | -------------------------------------------- |
|
|
512
|
+
| `TraceId` | Links the log to an active distributed trace |
|
|
513
|
+
| `SpanId` | Links the log to the currently active span |
|
|
514
|
+
|
|
515
|
+
In the Sentry UI you can navigate from an error or trace directly to the logs that
|
|
516
|
+
occurred during that trace, and vice versa.
|
|
517
|
+
No extra configuration required — correlation is automatic when `TracesSampleRate > 0`.
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
## Log Level Mapping
|
|
522
|
+
|
|
523
|
+
| Sentry Level | MEL (`ILogger`) | Serilog | NLog | log4net |
|
|
524
|
+
| ------------ | --------------- | ------------- | ------- | ------- |
|
|
525
|
+
| `Trace` | `Trace` | `Verbose` | `Trace` | `Trace` |
|
|
526
|
+
| `Debug` | `Debug` | `Debug` | `Debug` | `Debug` |
|
|
527
|
+
| `Info` | `Information` | `Information` | `Info` | `Info` |
|
|
528
|
+
| `Warning` | `Warning` | `Warning` | `Warn` | `Warn` |
|
|
529
|
+
| `Error` | `Error` | `Error` | `Error` | `Error` |
|
|
530
|
+
| `Fatal` | `Critical` | `Fatal` | `Fatal` | `Fatal` |
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
## SDK Version Matrix
|
|
535
|
+
|
|
536
|
+
| Feature | Min SDK Version |
|
|
537
|
+
| ---------------------------------------------------------------------------------------------- | --------------- |
|
|
538
|
+
| Native `SentrySdk.Logger` + `EnableLogs` (stable) | **6.0.0** |
|
|
539
|
+
| Native structured logging (experimental, via `options.Experimental`) | **5.14.0** |
|
|
540
|
+
| Native logs forwarded via supported integrations (MEL, AspNetCore, Maui, GoogleCloud, Serilog) | **6.0.0** |
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## Troubleshooting
|
|
545
|
+
|
|
546
|
+
| Issue | Solution |
|
|
547
|
+
| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
548
|
+
| Native logs not appearing in Sentry | Verify `EnableLogs = true` in `SentrySdk.Init()` — without it, all `SentrySdk.Logger.*` calls are silently discarded |
|
|
549
|
+
| MEL/Serilog/NLog logs not triggering Sentry events | Check `MinimumEventLevel` — only logs at or above this threshold are sent as events; lower it if needed |
|
|
550
|
+
| NLog: only Error/Fatal seen, no breadcrumbs | NLog `<logger minlevel>` must be set **lower** than `MinimumBreadcrumbLevel` so the SentryTarget receives all entries |
|
|
551
|
+
| SDK initialized twice (double events) | Set `InitializeSdk = false` in the logging integration when you also call `SentrySdk.Init()` in startup |
|
|
552
|
+
| Logs not linked to traces | Ensure `TracesSampleRate > 0` and the log is emitted inside an active span |
|
|
553
|
+
| Sensitive data appearing in logs | Add filtering in `SetBeforeSendLog`; better yet, avoid logging sensitive values at the call site |
|
|
554
|
+
| `SetBeforeSendLog` not firing | Confirm `EnableLogs = true` — without it, no logs are processed and the hook never runs |
|
|
555
|
+
| log4net: SDK not receiving Identity as user.id | Set `<SendIdentity value="true"/>` in the appender config |
|
|
556
|
+
| High log volume / rate limits | Use `SetBeforeSendLog` to drop `Trace` and `Debug` levels in production |
|