Rig.TUnit.Observability.Seq
0.1.0-beta.2
dotnet add package Rig.TUnit.Observability.Seq --version 0.1.0-beta.2
NuGet\Install-Package Rig.TUnit.Observability.Seq -Version 0.1.0-beta.2
<PackageReference Include="Rig.TUnit.Observability.Seq" Version="0.1.0-beta.2" />
<PackageVersion Include="Rig.TUnit.Observability.Seq" Version="0.1.0-beta.2" />
<PackageReference Include="Rig.TUnit.Observability.Seq" />
paket add Rig.TUnit.Observability.Seq --version 0.1.0-beta.2
#r "nuget: Rig.TUnit.Observability.Seq, 0.1.0-beta.2"
#:package Rig.TUnit.Observability.Seq@0.1.0-beta.2
#addin nuget:?package=Rig.TUnit.Observability.Seq&version=0.1.0-beta.2&prerelease
#tool nuget:?package=Rig.TUnit.Observability.Seq&version=0.1.0-beta.2&prerelease
Rig.TUnit.Observability.Seq
Testcontainers-backed Seq server with Serilog sink — logs land in a real Seq instance;
SeqAssert.Query(…).Count(N).Within(…)for fluent query-based verification.
What this package is
Boots a datalust/seq Testcontainer and wires a Serilog Seq sink so
logs emitted through the fixture's ILoggerFactory actually land in
Seq. Tests then assert via Seq's query language:
SeqAssert.Query(fx, "Level=@Warning").Count(1).Within(10s).
CaptureDashboardSnapshotAsync writes a .txt artefact to
TestResults/seq-dashboards/ with the Seq URL and metadata for
post-failure inspection.
When to use it
- Integration tests where Serilog-structured logs matter end-to-end.
- Regression-testing a Serilog configuration under real ingestion.
- Producing failure-artefact URLs pointing into Seq for triage.
- Not for: unit tests — use
Rig.TUnit.Observability.Loggingfor in-memory capture.
Prerequisites
- .NET 10 SDK
- Docker Desktop / Colima (Seq image ~250 MB)
Serilog+Serilog.Sinks.Seq(transitive)
Quick start
using Microsoft.Extensions.Logging;
using Rig.TUnit.Observability.Seq.Fixtures;
using Rig.TUnit.Observability.Seq.Options;
await using var fx = new SeqFixture(new SeqFixtureOptions { ImageTag = "latest" });
await fx.InitializeAsync();
fx.Factory.CreateLogger("T").LogWarning("Disk low {Free}", 100);
Options
| Property | Type | Default | Description |
|---|---|---|---|
ImageTag |
string |
"latest" |
Seq image tag |
StartupTimeoutSeconds |
int |
60 |
Seq boot window |
AcceptEula |
bool |
true |
Seq EULA acceptance |
MinimumLevel |
string |
"Information" |
Serilog filter |
Fixture + helper APIs
Rig.TUnit.Observability.Seq.Fixtures.SeqFixtureRig.TUnit.Observability.Seq.Options.SeqFixtureOptionsRig.TUnit.Observability.Seq.Builder.SeqRigBuilderRig.TUnit.Observability.Seq.Assertions.SeqAssert
Per-test isolation
Each fixture runs its own Seq container — no cross-test data bleed.
Logs include ServiceName = rigtunit-{IsolationKey} so multiple
parallel Seq instances stay distinct.
Parallelism + performance
- First-run pull: ~30 s.
- Warm startup: ~5 s.
- Per-log overhead: ~3–5 ms (Serilog batching typically hides this).
- Parallelism: limited by container cost; 2–4 concurrent fixtures typical.
Troubleshooting
SeqAssert.Query(…).Count(1)times out — Seq is eventually consistent for index builds; defaultWithinis 10 s, which is usually enough. Raise for heavy load.- Dashboard snapshot missing —
CaptureDashboardSnapshotAsyncwrites toTestResults/seq-dashboards/{testName}.txt; ensure the test runner's working directory is the project root.
See docs/troubleshooting.md#seq.
Provider quirks + edge cases
- Seq query language is its own DSL —
Level=@Warning,OrderId=42; see Seq docs for the full grammar. - The container's admin password is randomised per fixture; API keys are pre-created by the fixture so tests don't deal with auth.
Benchmarks
See SeqBenchmarks.cs;
baseline in benchmarks/baseline-005.json.
Related docs
- Architecture diagram
- Glossary
- Family base:
Rig.TUnit.Observability
License
MIT. See LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Bogus (>= 35.6.1)
- Microsoft.Extensions.Configuration (>= 10.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.0)
- Rig.TUnit.Observability (>= 0.1.0-beta.2)
- Serilog (>= 4.2.0)
- Serilog.Extensions.Logging (>= 9.0.0)
- Serilog.Sinks.Seq (>= 8.0.0)
- Testcontainers (>= 4.11.0)
- TUnit.Core (>= 1.34.5)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Rig.TUnit.Observability.Seq:
| Package | Downloads |
|---|---|
|
Rig.TUnit.All
Meta-package containing every Rig.TUnit.* package. DISCOURAGED — prefer per-feature or per-stack meta-packages (Rig.TUnit, Rig.TUnit.Microservices). |
|
|
Rig.TUnit.Microservices
Meta-package: Core + Mediator + Grpc + Outbox + Tracing + Jwt + Seq — the opinionated microservice testing kit. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-beta.2 | 42 | 4/27/2026 |
| 0.0.0-alpha.0.14 | 49 | 4/26/2026 |