Skip to content

Releases: logtide-dev/logtide-dotnet

v0.9.4

Choose a tag to compare

@Polliog Polliog released this 11 Jun 12:23

Added

  • LogTideTraceparentHandler: a DelegatingHandler injecting the W3C traceparent header on outbound HttpClient requests from the current LogTideScope (no-op without a scope or when the header is already set).

Full Changelog: v0.9.3...v0.9.4

v0.9.3

Choose a tag to compare

@Polliog Polliog released this 11 Jun 11:48

Added

  • ClientOptions.BeforeSend: hook called before buffering — mutate the entry or return null to drop it. A throwing hook never loses the entry.
  • ClientOptions.SampleRate (0.0–1.0, default 1.0): per-entry sampling applied after BeforeSend.

Full Changelog: v0.9.2...v0.9.3

v0.9.2

Choose a tag to compare

@Polliog Polliog released this 11 Jun 11:25

Changed

  • Permanent client errors (4xx except 408/429) are no longer retried: the batch is dropped after the first attempt. ApiException gains IsRetryable and RetryAfterMs.
  • A Retry-After header on 429/503 responses now overrides the computed backoff delay.

Full Changelog: v0.9.1...v0.9.2

v0.9.1

Choose a tag to compare

@Polliog Polliog released this 11 Jun 06:59

Added

  • Every entry now carries metadata.sdk = {"name": "logtide-dotnet", "version": ...} (caller-provided sdk key wins).

Full Changelog: v0.9.0...v0.9.1

v0.9.0

Choose a tag to compare

@Polliog Polliog released this 11 Jun 06:27

Added

  • Microsoft.Extensions.Logging provider: LogTideLoggerProvider + ILoggingBuilder.AddLogTide(...) (explicit client or DI-resolved). Routes ILogger<T> output through the client: structured state values and BeginScope values become metadata, levels are mapped (Trace/Debug → debug, Critical → critical), exceptions attach in the canonical structured format.
  • LogTideClient.SerializeException(Exception) is now public.

Changed

  • Breaking: exceptions are now serialized under the canonical metadata.exception key (was metadata.error) using the platform's StructuredException contract: type, message, language: "csharp", structured stacktrace frames, raw, and a nested cause chain capped at depth 10. Server-side error grouping and fingerprinting now work for .NET exceptions. The Serilog sink uses the same serializer.

Full Changelog: v0.8.3...v0.9.0

v0.8.3

Choose a tag to compare

@Polliog Polliog released this 23 Mar 12:20
d000f1b

What's New

Full SDK refactor with enterprise features:

Added

  • W3C traceparent distributed tracing with AsyncLocal LogTideScope
  • Span tracking with OTLP export (StartSpan/FinishSpan)
  • Breadcrumbs ring buffer attached to scopes
  • Composable transport layerILogTransport, ISpanTransport, BatchTransport
  • ILogTideClient interface for DI and testability
  • Integration system with GlobalErrorIntegration
  • Serilog sink — new LogTide.SDK.Serilog package
  • DSN connection string support
  • Sensitive header filtering in middleware
  • LogTideErrorHandlerMiddleware for unhandled exceptions
  • Target frameworks: net8.0 / net9.0, LangVersion 13

Fixed

  • 17 bugs including circuit breaker HalfOpen, dispose data loss, race conditions, W3C spec compliance, resource leaks, and sync-over-async deadlocks

Breaking Changes

  • SetTraceId()/WithTraceId() removed — use LogTideScope.Create()
  • Middleware client resolved from DI (no more Options.Client)
  • Default trace header: W3C traceparent (was X-Trace-Id)
  • Dropped net6.0/net7.0

See CHANGELOG.md for full details.

What's Changed

  • Refactor SDK with W3C tracing, CI setup, and NuGet release workflow by @Polliog in #1

New Contributors

Full Changelog: https://github.com/logtide-dev/logtide-sdk-csharp/commits/v0.8.3