Genocs.Logging
9.0.0-beta005
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
<PackageReference Include="Genocs.Logging" Version="9.0.0-beta005" />
<PackageVersion Include="Genocs.Logging" Version="9.0.0-beta005" />
<PackageReference Include="Genocs.Logging" />
paket add Genocs.Logging --version 9.0.0-beta005
#r "nuget: Genocs.Logging, 9.0.0-beta005"
#:package Genocs.Logging@9.0.0-beta005
#addin nuget:?package=Genocs.Logging&version=9.0.0-beta005&prerelease
#tool nuget:?package=Genocs.Logging&version=9.0.0-beta005&prerelease
Genocs.Logging

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
UseLoggingAddCorrelationContextLoggingAddCommandHandlersLoggingAddEventHandlersLoggingMapLogLevelHandlerUseCorrelationContextLogging
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.maxBodyLengthis normalized to a safe bounded range. Values less than or equal to0are treated as4096and values above16384are 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.bodyactivity tag. - Response payload is captured after request pipeline completion and is exposed only through
http.response.bodyactivity 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
64characters. - Baggage values are capped at
256characters. - Duplicate baggage keys after normalization are ignored.
Configuration Notes
logger.enableddefaults totrue. Set it tofalseto disable sink and enrichment wiring fromGenocs.Logging.logger.seq.enabledrequires a non-emptylogger.seq.url.logger.loki.enabledrequires a non-emptylogger.loki.url.MapLogLevelHandleris aPOSTendpoint that expects alevelquery-string value (for example/logging/level?level=Debug).AddCorrelationContextLoggingonly registers middleware;UseCorrelationContextLoggingmust 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
- Documentation Portal: https://learn.fiscanner.net/
- Documentation: https://github.com/Genocs/genocs-library/tree/main/docs
- Repository: https://github.com/Genocs/genocs-library
Release Notes
| Product | Versions 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. |
-
net10.0
- Genocs.Core (>= 9.0.0-beta005)
- Microsoft.ApplicationInsights (>= 2.23.0)
- Serilog.AspNetCore (>= 10.0.0)
- Serilog.Enrichers.Environment (>= 3.0.1)
- Serilog.Enrichers.Process (>= 3.0.0)
- Serilog.Enrichers.Span (>= 3.1.0)
- Serilog.Enrichers.Thread (>= 4.0.0)
- Serilog.Exceptions (>= 8.4.0)
- Serilog.Sinks.ApplicationInsights (>= 5.0.1)
- Serilog.Sinks.Async (>= 2.1.0)
- Serilog.Sinks.ElasticSearch (>= 10.0.0)
- Serilog.Sinks.File (>= 7.0.0)
- Serilog.Sinks.Grafana.Loki (>= 8.3.2)
- Serilog.Sinks.OpenTelemetry (>= 4.2.0)
- Serilog.Sinks.Seq (>= 9.0.0)
- SmartFormat.NET (>= 3.6.1)
-
net8.0
- Genocs.Core (>= 9.0.0-beta005)
- Microsoft.ApplicationInsights (>= 2.23.0)
- Serilog.AspNetCore (>= 10.0.0)
- Serilog.Enrichers.Environment (>= 3.0.1)
- Serilog.Enrichers.Process (>= 3.0.0)
- Serilog.Enrichers.Span (>= 3.1.0)
- Serilog.Enrichers.Thread (>= 4.0.0)
- Serilog.Exceptions (>= 8.4.0)
- Serilog.Sinks.ApplicationInsights (>= 5.0.1)
- Serilog.Sinks.Async (>= 2.1.0)
- Serilog.Sinks.ElasticSearch (>= 10.0.0)
- Serilog.Sinks.File (>= 7.0.0)
- Serilog.Sinks.Grafana.Loki (>= 8.3.2)
- Serilog.Sinks.OpenTelemetry (>= 4.2.0)
- Serilog.Sinks.Seq (>= 9.0.0)
- SmartFormat.NET (>= 3.6.1)
-
net9.0
- Genocs.Core (>= 9.0.0-beta005)
- Microsoft.ApplicationInsights (>= 2.23.0)
- Serilog.AspNetCore (>= 10.0.0)
- Serilog.Enrichers.Environment (>= 3.0.1)
- Serilog.Enrichers.Process (>= 3.0.0)
- Serilog.Enrichers.Span (>= 3.1.0)
- Serilog.Enrichers.Thread (>= 4.0.0)
- Serilog.Exceptions (>= 8.4.0)
- Serilog.Sinks.ApplicationInsights (>= 5.0.1)
- Serilog.Sinks.Async (>= 2.1.0)
- Serilog.Sinks.ElasticSearch (>= 10.0.0)
- Serilog.Sinks.File (>= 7.0.0)
- Serilog.Sinks.Grafana.Loki (>= 8.3.2)
- Serilog.Sinks.OpenTelemetry (>= 4.2.0)
- Serilog.Sinks.Seq (>= 9.0.0)
- SmartFormat.NET (>= 3.6.1)
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 |
The change log and breaking changes are listed here.
https://github.com/Genocs/genocs-library/releases