Aller au contenu

Serilog.Sinks.SentrySDK : Adapter les événements de logs à Sentry

Serilog.Sinks.SentrySDK relie un pipeline de journalisation .NET au SDK Sentry. L’application émet des événements structurés; le sink les adapte pour Sentry, sans demander à chaque point d’appel d’utiliser directement le SDK.

Bibliothèque
  • Mis à jour
  • 2
  • C# · 98.04%
  • MIT
Langages du dépôtC# 98.04%2

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
C#98.04%89 769
PowerShell1.96%1 795

GitHub · README · Statistiques de langages

Aperçu

Pourquoi il existe

Sink Serilog .NET 6+ reliant la journalisation structurée à Sentry avec zéro allocation superflue.

Cas d’usage

Observabilité des erreurs et traçage distribué pour microservices d'entreprise .NET.

Démarrage

Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.

README.md · Installation
dotnet add package Serilog.Sinks.SentrySDK
Install-Package Serilog.Sinks.SentrySDK
README.md · Build, run tests, and coverage (local development)
dotnet restore src/Serilog.Sinks.SentrySDK/Serilog.Sinks.SentrySDK.csproj
dotnet build src/Serilog.Sinks.SentrySDK/Serilog.Sinks.SentrySDK.csproj -c Release
dotnet build src/Serilog.Sinks.SentrySDK.AspNetCore/Serilog.Sinks.SentrySDK.AspNetCore.csproj -c Release
dotnet test src/Serilog.Sinks.SentrySDK.Tests/Serilog.Sinks.SentrySDK.Tests.csproj
dotnet test src/Serilog.Sinks.SentrySDK.AspNetCore.Tests/Serilog.Sinks.SentrySDK.AspNetCore.Tests.csproj
README.md · Build, run tests, and coverage (local development)
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=./reports/coverage src/Serilog.Sinks.SentrySDK.Tests/Serilog.Sinks.SentrySDK.Tests.csproj
README.md · Code formatting (dotnet format)
dotnet restore src/Serilog.Sinks.SentrySDK.sln
dotnet format src/Serilog.Sinks.SentrySDK.sln
README.md · Code formatting (dotnet format)
dotnet format src/Serilog.Sinks.SentrySDK.sln --verify-no-changes

Références du dépôt

Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.

Prérequis et premier essai

Installation

README.md

The library is available on NuGet as Serilog.Sinks.SentrySDK, or alternate ids Serilog.Sinks.SentrySDK.6 / Serilog.Sinks.SentrySDK.10 if you want a single target framework per package. You can install it with the following command: This package references the Sentry NuGet package (6.3.2), the same major line as the Sentry for .NET documentation. For generic SDK setup (DSN, SendDefaultPii, debug), see the official Quick Start. Initialize the SDK as early as possible so startup failures are reported. This sink calls SentrySdk.Init internally when you configure WriteTo.Sentry with a DSN; avoid calling SentrySdk.Init again for the same process unless you coordinate a single initialization path.
Lire les instructions complètes ↗

Build, run tests, and coverage (local development)

README.md

Prerequisites: .NET SDK 10 to build and run tests. The published libraries multi-target net6.0 and net10.0 (one package includes both under lib/). CI also installs the 6.0.x SDK band so net6.0 targets build cleanly on the runner. From the repository root: Run tests with coverage (same approach as CI, using coverlet): CI uploads Cobertura to Codecov; keep or improve coverage when you change production code.
Lire les instructions complètes ↗

Installation

src/PACKAGE_README.md

Core sink: ASP.NET Core companion (user/request context in logs): Alternate ids (single TFM per package): Serilog.Sinks.SentrySDK.6, Serilog.Sinks.SentrySDK.10, and matching AspNetCore ids — see Available packages. This stack references the Sentry NuGet package (6.3.2), the same major line as Sentry for .NET. For DSN, SendDefaultPii, and debug options, see the Quick Start. Initialize as early as possible so startup failures are reported. This sink calls SentrySdk.Init when you configure WriteTo.Sentry with a DSN; avoid a second SentrySdk.Init in the same process unless you deliberately use one initialization path. Set a valid Sentry DSN in appsettings.json or in code. Without a DSN, the sink throws when the DSN argument is empty. Demos show JSON and programmatic configuration.
Lire les instructions complètes ↗

Getting started

src/PACKAGE_README.md

Add the sink so logs are sent to Sentry. You can use Serilog.Settings.Configuration with JSON: Optional configureSentryOptions and beforeSend on WriteTo.Sentry map to init-time SentryOptions and a chained SetBeforeSend. A fuller argument list and examples are in the repository README — Getting Started.
Lire les instructions complètes ↗

Installation

src/PACKAGE_README_NET6.md

This stack references Sentry (6.3.2). See the Sentry .NET Quick Start. This sink calls SentrySdk.Init when you configure WriteTo.Sentry with a DSN; avoid duplicate in-process initialization.
Lire les instructions complètes ↗
API et intégration

Serilog.Sinks.SentrySDK

README.md

A Serilog sink for Sentry that simplifies error and log management in your applications. Based on serilog-contrib/serilog-sinks-sentry
Lire les instructions complètes ↗

Sentry SDK

README.md

Reference for the Sentry .NET SDK SentryOptions (this package references Sentry 6.3.2). The This sink column describes how each member relates to WriteTo.Sentry in this library.
Lire les instructions complètes ↗

Contributing to Serilog.Sinks.SentrySDK

CONTRIBUTING.md

Thank you for helping improve this project. This document describes how we work on GitHub and what we expect in contributions.
Lire les instructions complètes ↗

Serilog.Sinks.SentrySDK

src/PACKAGE_README.md

A Serilog sink for Sentry that simplifies error and log management in your applications. It builds on the Sentry .NET SDK and official Serilog integration. Based on serilog-contrib/serilog-sinks-sentry
Lire les instructions complètes ↗

Sentry SDK options vs this sink

src/PACKAGE_README.md

This package aligns with Sentry .NET 6.3.2. The repository README maps SentryOptions properties and methods to WriteTo.Sentry parameters (large tables): Sentry SDK and Mapping to WriteTo.Sentry. Further reading: Data Management, Structured logs, Migration guide.
Lire les instructions complètes ↗
Développement et contributions

Tests and coverage

CONTRIBUTING.md

  • Run tests locally before pushing:
  • CI runs these tests and uploads coverage to Codecov. Prefer new tests for new code paths (e.g. factories, sink behavior, middleware) so coverage does not drop unnecessarily.
Lire les instructions complètes ↗

Demos, build, contributing

src/PACKAGE_README.md

  • Demos: demos/README.md on GitHub
  • Solution and local build/test commands: README — Build, run tests, and coverage
  • CONTRIBUTING.md Full documentation (CI, publishing, formatting): README.md on GitHub.
Lire les instructions complètes ↗
Documentation source

6 documents lus parmi 6 candidats.

Fonctions et composants 2

Frontière entre sink et SDK
SentrySink.cs définit une interface enveloppant le SDK, avec des méthodes de capture de messages, d’exceptions et de transactions. Son implémentation délègue à SentrySdk. Les tests peuvent remplacer ces appels externes.
Contexte applicatif
L’arborescence distingue le paquet du sink, l’intégration ASP.NET Core et les tests. Des factories de requête et d’utilisateur adaptent le contexte HTTP. La configuration des logs et leur enrichissement ont donc des responsabilités différentes.

Architecture

Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.

Contexte système Contexte
  1. Événement de log
  2. Pipeline Serilog
  3. Sink Sentry et contexte
  4. Enveloppe du SDK
  5. SDK Sentry

Liens vérifiés dans le dépôt.

Mermaid Diagramme interactif (chargement à l’ouverture)

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de Serilog.Sinks.SentrySDK
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
flowchart LR

subgraph group_logging["Serilog integration"]
  node_sinkconfig["Sink registration"]
  node_sink["Event sink<br/>[SentrySink.cs]"]
end

subgraph group_sentry["Sentry event delivery"]
  node_requestfactory["Request factory"]
  node_userfactory["User factory"]
  node_sentrysdk["Sentry SDK"]
end

subgraph group_web["ASP.NET Core context"]
  node_contextadapter["HTTP adapter"]
  node_middleware["Request middleware"]
  node_destructure["Context destructuring"]
  node_contextcontract["HTTP context contract"]
end

node_app(("Application"))
node_serilog["Serilog pipeline"]
node_sentryservice(("Sentry service"))

node_app -->|"writes events"| node_serilog
node_serilog -->|"configures sink"| node_sinkconfig
node_sinkconfig -->|"creates sink"| node_sink
node_sink -->|"captures events"| node_sentrysdk
node_sentrysdk -.->|"sends telemetry"| node_sentryservice
node_middleware -->|"pushes context"| node_contextadapter
node_middleware -->|"logs exceptions"| node_serilog
node_contextadapter -->|"implements"| node_contextcontract
node_destructure -->|"recognizes context"| node_contextcontract
node_requestfactory -->|"reads request data"| node_contextcontract
node_userfactory -->|"reads user data"| node_contextcontract
node_sink -.->|"uses request context"| node_requestfactory
node_sink -.->|"uses user context"| node_userfactory


class node_sinkconfig,node_sink toneBlue
class node_requestfactory,node_userfactory,node_sentrysdk toneAmber
class node_contextadapter,node_middleware,node_destructure,node_contextcontract toneMint
class node_app,node_serilog,node_sentryservice toneIndigo

Un sink Serilog qui configure le SDK Sentry et transforme les événements de journal en messages, exceptions, fils d’Ariane et traces facultatives. Le paquet ASP.NET Core ajoute le contexte de requête et d’utilisateur par un adaptateur HTTP.

Composants
12
Connexions
13
Liens appuyés par le code ou le README
10/13
Version texte du diagramme
  • Événement de log → Pipeline Serilog
  • Pipeline Serilog → Sink Sentry et contexte
  • Sink Sentry et contexte → Enveloppe du SDK
  • Enveloppe du SDK → SDK Sentry
Suivre un parcours dans le code

Suivez un log contenant une exception et comparez-le à un simple message. L’enveloppe expose des opérations distinctes; un test utile vérifie l’opération choisie et ses données, au-delà de la présence d’un appel.

Types et structure des fichiers

38 types déclarés, dont 12 dans l’aperçu des relations de base.

Diagramme des types
classDiagram
direction TB
class ta0f4fc6d8b31["ISentryRequestFactory"] {
  <<interface>>
  Create()
}
class tab0f434b248f["SentryRequestFactory"] {
  SentryRequestFactory()
  Create()
}
class t94a164d611c8["ISentryRequest"] {
  <<interface>>
}
class t66938c58944a["SentryRequest"] {
}
class td9dd9f1be134["ISentrySdkWrapper"] {
  <<interface>>
  CaptureMessage()
  CaptureException()
  StartTransaction()
}
class t436d77520181["SentrySdkWrapper"] {
  SentrySdkWrapper()
  CaptureMessage()
  CaptureException()
  StartTransaction()
}
class t9aa877270a99["ITransactionService"] {
  <<interface>>
  StartChild()
}
class t7f1535817357["TransactionService"] {
  StartChild()
}
class t53092b4cd27d["SentrySink"] {
  SentrySink()
  Emit()
  EmitWithoutTracing()
  GetBreadcrumbLevel()
}
class t3bef4532763b["SentrySinkExtensions"] {
  Sentry()
}
class t6b344cd3bb4d["Program"] {
  Main()
  ThrowDivideByZeroSecondTier()
  DivByZero()
  ThrowParseExceptionSecondTier()
}
class t0108ee6641d7["HomeController"] {
  Index()
  About()
  Contact()
  Error()
}
ta0f4fc6d8b31 <|.. tab0f434b248f
t94a164d611c8 <|.. t66938c58944a
td9dd9f1be134 <|.. t436d77520181
t9aa877270a99 <|.. t7f1535817357
class bc2d528bdb08a["ILogEventSink"] {
  <<unresolved_base>>
}
t53092b4cd27d ..> bc2d528bdb08a : declared base
class b06fa01e7e2b1["IDisposable"] {
  <<unresolved_base>>
}
t53092b4cd27d ..> b06fa01e7e2b1 : declared base
class bd8f3faa41a98["Controller"] {
  <<unresolved_base>>
}
t0108ee6641d7 ..> bd8f3faa41a98 : declared base

Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.

Index des types

Référence

32 / 32 fichiers admissibles lus (117 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.

Ce que couvre l’analyse

Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.

Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.

Carte des fichiers
flowchart TD
  root["Serilog.Sinks.SentrySDK"]
  f0["src/Serilog.Sinks.SentrySDK/AspNetCoreSentryRequestFactory.cs"]
  root --> f0
  f1["src/Serilog.Sinks.SentrySDK/SentrySink.cs"]
  root --> f1
  f2["src/Serilog.Sinks.SentrySDK/SentrySinkExtensions.cs"]
  root --> f2
  f3["README.md"]
  root --> f3
  f4["demos/README.md"]
  root --> f4
  f5["demos/SentryConsole/Program.cs"]
  root --> f5
  f6["demos/SentryWeb/Program.cs"]
  root --> f6
  f7["demos/SentryWeb/Startup.cs"]
  root --> f7
  f8["src/Serilog.Sinks.SentrySDK.AspNetCore.Tests/AspCoreHttpContextAdapterTests.cs"]
  root --> f8
  f9["src/Serilog.Sinks.SentrySDK.AspNetCore.Tests/ExceptionExtensionsTests.cs"]
  root --> f9
  f10["src/Serilog.Sinks.SentrySDK.AspNetCore.Tests/HttpContextDestructingPolicyTests.cs"]
  root --> f10
  f11["src/Serilog.Sinks.SentrySDK.AspNetCore.Tests/SentrySinkContextMiddlewareTests.cs"]
  root --> f11
  f12["src/Serilog.Sinks.SentrySDK.AspNetCore.Tests/SerilogSentryExtensionsTests.cs"]
  root --> f12
  f13["src/Serilog.Sinks.SentrySDK.AspNetCore/AspCoreHttpContextAdapter.cs"]
  root --> f13
  f14["src/Serilog.Sinks.SentrySDK.AspNetCore/ExceptionExtensions.cs"]
  root --> f14
  f15["src/Serilog.Sinks.SentrySDK.AspNetCore/HttpContextDestructingPolicy.cs"]
  root --> f15

Fichiers à lire 3

Références