Serilog.Sinks.Map 2.0.0
Serilog.Sinks.Map

A Serilog sink wrapper that dispatches events based on a property value.
Getting started
Install the package from NuGet:
dotnet add package Serilog.Sinks.Map
The WriteTo.Map()
method accepts a property name to use as a sink selector, a default value
to use when the property is not attached, and a function that configures the sinks based on each property value.
For example, when using Serilog.Sinks.File:
dotnet add package Serilog.Sinks.File
The value of a log event property like Name
can be inserted into log filenames:
Log.Logger = new LoggerConfiguration()
.WriteTo.Map("Name", "Other", (name, wt) => wt.File($"./logs/log-{name}.txt"))
.CreateLogger();
Log.Information("Hello, {Name}!", "Alice");
// -> Event written to log-Alice.txt
Log.Information("Hello, {Name}!", "Bob");
// -> Event written to log-Bob.txt
Log.Information("Shutting down");
// -> Event written to log-Other.txt
Log.CloseAndFlush();
Limiting the number of open sinks
By default, the target sinks opened by this sink won't be closed/disposed until the mapped sink is. This is efficient for dispatching to a finite number of sinks, e.g. file-per-log-level and so-on, but isn't suitable when the set of possible key values is open-ended.
To limit the number of target sinks that will be kept open in the map, specify sinkMapCountLimit
:
.WriteTo.Map("Name",
"Other",
(name, wt) => wt.File($"./logs/log-{name}.txt"),
sinkMapCountLimit: 10)
To keep no sinks open, i.e. close them immediately after processing each event, a sinkMapCountLimit
of zero may be specified.
Configuration with <appSettings>
and appSettings.json
Serilog.Sinks.Map is built around a mapping function, and as such, isn't able to be configured using XML or JSON configuration.
No packages depend on Serilog.Sinks.Map.
Version | Downloads | Last updated |
---|---|---|
2.0.0 | 46 | 07/14/2024 |
2.0.0-dev-00048 | 30 | 07/14/2024 |
1.0.2 | 1,841 | 12/13/2023 |
1.0.2-dev-00040 | 32 | 01/03/2024 |
1.0.2-dev-00031 | 30 | 01/03/2024 |
1.0.1 | 29 | 01/03/2024 |
1.0.1-dev-00028 | 36 | 01/03/2024 |
1.0.1-dev-00025 | 38 | 01/03/2024 |
1.0.0 | 40 | 01/03/2024 |
1.0.0-dev-00020 | 33 | 01/03/2024 |
1.0.0-dev-00017 | 29 | 01/03/2024 |
1.0.0-dev-00012 | 34 | 01/03/2024 |
1.0.0-dev-00008 | 31 | 01/03/2024 |
1.0.0-dev-00006 | 33 | 01/03/2024 |
1.0.0-dev-00004 | 32 | 01/03/2024 |
1.0.0-dev-00001 | 31 | 01/03/2024 |