Genocs.Logging 9.0.0-beta005

This is a prerelease version of Genocs.Logging.
There is a newer prerelease version of this package available.
See the version list below for details.

Requires NuGet 5.0.0 or higher.

dotnet add package Genocs.Logging --version 9.0.0-beta005
                    
NuGet\Install-Package Genocs.Logging -Version 9.0.0-beta005
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Genocs.Logging" Version="9.0.0-beta005" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Genocs.Logging" Version="9.0.0-beta005" />
                    
Directory.Packages.props
<PackageReference Include="Genocs.Logging" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Genocs.Logging --version 9.0.0-beta005
                    
#r "nuget: Genocs.Logging, 9.0.0-beta005"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Genocs.Logging@9.0.0-beta005
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Genocs.Logging&version=9.0.0-beta005&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Genocs.Logging&version=9.0.0-beta005&prerelease
                    
Install as a Cake Tool

Genocs.Logging

Genocs Library Banner

Logging abstractions and extensions for Genocs applications. Supports net10.0, net9.0, and net8.0.

Installation

dotnet add package Genocs.Logging

Getting Started

Use this package to wire structured logging, CQRS handler logging behaviors, and correlation-aware middleware.

Supported sink families in this package are Console, File, OTLP (logs), Elasticsearch, Seq, Loki, and Azure Application Insights. Distributed tracing and metrics export should be handled by Genocs.Telemetry. Log export ownership should stay in Genocs.Logging.

Main Entry Points

  • UseLogging
  • AddCorrelationContextLogging
  • AddCommandHandlersLogging
  • AddEventHandlersLogging
  • MapLogLevelHandler
  • UseCorrelationContextLogging

CQRS Decorator Assembly Selection

AddCommandHandlersLogging() and AddEventHandlersLogging() discover handlers in the entry assembly by default.

If handlers are declared in another assembly (for example, separate application or feature projects), pass it explicitly:

builder.AddGenocs()
	.AddCommandHandlersLogging(typeof(CreateOrder).Assembly)
	.AddEventHandlersLogging(typeof(OrderCreated).Assembly);

Optional payload capture can be enabled via:

{
	"logger": {
		"httpPayload": {
			"enabled": true,
			"captureRequestBody": true,
			"captureResponseBody": false,
			"maxBodyLength": 4096
		}
	}
}

HTTP Payload Capture Policy

  • Payload capture is disabled by default and should only be enabled for targeted diagnostics.
  • httpPayload.maxBodyLength is normalized to a safe bounded range. Values less than or equal to 0 are treated as 4096 and values above 16384 are capped.
  • Content type matching uses strict media-type semantics (for example application/json, application/*+json) and ignores invalid patterns.
  • Request payload is available in request scope and http.request.body activity tag.
  • Response payload is captured after request pipeline completion and is exposed only through http.response.body activity tag.
  • When payload capture is disabled, middleware avoids request/response buffering paths.

Correlation Baggage Guardrails

  • Baggage enrichment is bounded to prevent unbounded scope growth in high-throughput scenarios.
  • Maximum baggage items added to log scope per request: 32.
  • Baggage keys are trimmed and capped at 64 characters.
  • Baggage values are capped at 256 characters.
  • Duplicate baggage keys after normalization are ignored.

Configuration Notes

  • logger.enabled defaults to true. Set it to false to disable sink and enrichment wiring from Genocs.Logging.
  • logger.seq.enabled requires a non-empty logger.seq.url.
  • logger.loki.enabled requires a non-empty logger.loki.url.
  • MapLogLevelHandler is a POST endpoint that expects a level query-string value (for example /logging/level?level=Debug).
  • AddCorrelationContextLogging only registers middleware; UseCorrelationContextLogging must be added to the app pipeline to activate it.

Non-Overlapping Scenarios

Use one logging exporter ownership path per environment to avoid duplicate log ingestion. Genocs.Telemetry is traces-and-metrics only and does not wire OpenTelemetry log exporters.

Scenario 1: Send Logging, Metrics, and Traces to Azure Application Insights

Use OpenTelemetry Azure Monitor exporter for all three signals and keep Serilog Azure/OTLP sinks disabled to avoid duplicates.

{
	"logger": {
		"otlpEndpoint": null,
		"azure": {
			"enabled": false
		}
	},
	"telemetry": {
		"enabled": true,
		"exporter": {
			"enabled": false
		},
		"azure": {
			"enabled": true,
			"enableTracing": true,
			"enableMetrics": true,
			"enableLogging": true,
			"connectionString": "InstrumentationKey=<<key>>;IngestionEndpoint=https://<<region>>.in.applicationinsights.azure.com/"
		},
		"console": {
			"enabled": false,
			"enableTracing": false,
			"enableMetrics": false,
			"enableLogging": false
		}
	}
}

Scenario 2: Send Only Traces to Jaeger (OTLP)

Use OTLP exporter for tracing only, disable OTLP logs/metrics, and keep Azure sinks disabled.

{
	"logger": {
		"otlpEndpoint": null,
		"azure": {
			"enabled": false
		}
	},
	"telemetry": {
		"enabled": true,
		"exporter": {
			"enabled": true,
			"otlpEndpoint": "http://localhost:4317",
			"protocol": "Grpc",
			"enableTracing": true,
			"enableMetrics": false,
			"enableLogging": false
		},
		"azure": {
			"enabled": false,
			"enableTracing": false,
			"enableMetrics": false,
			"enableLogging": false
		},
		"console": {
			"enabled": false,
			"enableTracing": false,
			"enableMetrics": false,
			"enableLogging": false
		}
	}
}

Support

Release Notes

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Genocs.Logging:

Package Downloads
Genocs.Tracing

The tracing library to setup OpenTelemetry.

Genocs.Monitoring

Telemetry and Tracing library.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
9.0.0-beta009 123 5/11/2026
9.0.0-beta008 167 5/2/2026
9.0.0-beta007 101 4/29/2026
9.0.0-beta006 103 4/27/2026
9.0.0-beta005 121 4/26/2026
9.0.0-beta004 102 4/18/2026
9.0.0-beta003 140 4/5/2026
9.0.0-beta002 134 3/17/2026
9.0.0-beta001 137 2/28/2026
8.1.0 196 2/8/2026
8.0.0 2,721 11/23/2025
7.5.1 2,723 10/19/2025
7.5.0 5,374 10/12/2025
7.4.1 2,064 9/19/2025
7.4.0 310 9/19/2025
7.3.0 8,390 8/14/2025
7.2.5 13,744 5/1/2025
7.2.4 2,236 4/18/2025
7.2.3 17,623 1/20/2025
7.2.2 866 12/31/2024
Loading failed

The change log and breaking changes are listed here.
           https://github.com/Genocs/genocs-library/releases