Serilog Sinks Map

v2.0.0·Updated 2026-04-23

NuGet Serilog.Sinks.Map package re-bundled for convenient consumption and dependency management.

About this mod Author’s original text

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 ` 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.

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

dotnet_lethal_company-Serilog

File & checksum

Filename
Serilog_Sinks_Map-2.0.0.zip
File size
31.1 KiB