VanDerHeijden.Logging.Redis
10.1.0
dotnet add package VanDerHeijden.Logging.Redis --version 10.1.0
NuGet\Install-Package VanDerHeijden.Logging.Redis -Version 10.1.0
<PackageReference Include="VanDerHeijden.Logging.Redis" Version="10.1.0" />
<PackageVersion Include="VanDerHeijden.Logging.Redis" Version="10.1.0" />
<PackageReference Include="VanDerHeijden.Logging.Redis" />
paket add VanDerHeijden.Logging.Redis --version 10.1.0
#r "nuget: VanDerHeijden.Logging.Redis, 10.1.0"
#:package VanDerHeijden.Logging.Redis@10.1.0
#addin nuget:?package=VanDerHeijden.Logging.Redis&version=10.1.0
#tool nuget:?package=VanDerHeijden.Logging.Redis&version=10.1.0
VanDerHeijden.Logging.Redis
Redis log writer for VanDerHeijden.Logging.
Writes batched log entries to a Redis list using RPUSH. Each entry is serialized as JSON. The list can be consumed by any Redis-compatible consumer such as Logstash, a worker service, or a custom processor via BLPOP.
Installation
dotnet add package VanDerHeijden.Logging.Redis
Usage
var redis = await ConnectionMultiplexer.ConnectAsync("localhost:6379");
var db = redis.GetDatabase();
builder.Logging.AddRedisLogger(
database: db,
listKey: "logs",
ttl: TimeSpan.FromDays(7)); // optional: auto-expire the key
Log entry format (JSON)
{
"timestamp": "2026-02-22T14:03:12.456Z",
"level": "Information",
"eventId": 0,
"category": "MyApp.Service",
"message": "User 42 logged in",
"messageTemplate": "User {UserId} logged in",
"properties": { "UserId": 42 },
"path": "/api/users/login",
"method": "POST",
"clientIp": "203.0.113.42",
"referer": "https://example.com/login",
"userAgent": "Mozilla/5.0 ..."
}
This is the shared VanDerHeijden.Logging.LogEntry (RedisLogEntry has been removed), serialized by the shared
LogEntryJsonWriter — the same field names as the JSON file logger. timestamp is always UTC. Fields that are
null (eventName, exception, sessionId, sessionGuid, ...) are omitted.
The HTTP fields are populated automatically when IHttpContextAccessor is registered:
builder.Services.AddHttpContextAccessor();
Outside an HTTP context they are omitted.
Notes
- The Redis list grows until consumed. Make sure a consumer drains it via
BLPOP/LPOP. - Use
ttlto automatically expire the key if no consumer is configured. FullModedefaults toDropOldest— under extreme load, oldest log entries are dropped to protect application throughput.- Batching is configurable:
AddRedisLogger(db, configure: options => options.BatchSize = 500). Defaults:BatchSize200,MaxIdleMs2000,QueueCapacity10 000.
Repository
| 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
- Microsoft.Extensions.DependencyInjection (>= 10.0.12)
- Microsoft.Extensions.Logging (>= 10.0.12)
- StackExchange.Redis (>= 3.2.1)
- VanDerHeijden.Logging (>= 10.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.