CSharpEssentials.LoggerHelper.Sink.File 5.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package CSharpEssentials.LoggerHelper.Sink.File --version 5.0.1
                    
NuGet\Install-Package CSharpEssentials.LoggerHelper.Sink.File -Version 5.0.1
                    
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="CSharpEssentials.LoggerHelper.Sink.File" Version="5.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CSharpEssentials.LoggerHelper.Sink.File" Version="5.0.1" />
                    
Directory.Packages.props
<PackageReference Include="CSharpEssentials.LoggerHelper.Sink.File" />
                    
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 CSharpEssentials.LoggerHelper.Sink.File --version 5.0.1
                    
#r "nuget: CSharpEssentials.LoggerHelper.Sink.File, 5.0.1"
                    
#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 CSharpEssentials.LoggerHelper.Sink.File@5.0.1
                    
#: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=CSharpEssentials.LoggerHelper.Sink.File&version=5.0.1
                    
Install as a Cake Addin
#tool nuget:?package=CSharpEssentials.LoggerHelper.Sink.File&version=5.0.1
                    
Install as a Cake Tool

CSharpEssentials.LoggerHelper.Sink.File

Rolling JSON log files with configurable retention for CSharpEssentials.LoggerHelper.

Part of the CSharpEssentials.LoggerHelper ecosystem — install only the sinks you need.


Install

dotnet add package CSharpEssentials.LoggerHelper
dotnet add package CSharpEssentials.LoggerHelper.Sink.File

Quick Setup — JSON

{
  "LoggerHelper": {
    "ApplicationName": "MyApp",
    "Routes": [
      { "Sink": "File", "Levels": ["Information", "Warning", "Error", "Fatal"] }
    ],
    "Sinks": {
      "File": {
        "Path": "C:\\Logs\\MyApp",
        "RollingInterval": "Day",
        "RetainedFileCountLimit": 14
      }
    }
  }
}
builder.Services.AddLoggerHelper(builder.Configuration);

Quick Setup — Fluent API

builder.Services.AddLoggerHelper(b => b
    .WithApplicationName("MyApp")
    .AddRoute("File", LogEventLevel.Information, LogEventLevel.Warning, LogEventLevel.Error, LogEventLevel.Fatal)
    .ConfigureFile(f => {
        f.Path = "C:\\Logs\\MyApp";
        f.RollingInterval = "Day";
        f.RetainedFileCountLimit = 14;
    })
);

Dynamic File Routing by Property (v5.0.1)

Route log files into subdirectories based on a log event property value. Perfect for multi-tenant apps, per-module separation, or any scenario where you need logs organized by a runtime value.

JSON config

"Sinks": {
  "File": {
    "Path": "Logs",
    "RollingInterval": "Day",
    "FileNameProperty": "TenantId"
  }
}

How it works

// Logs with TenantId → Logs/acme/log-20260531.txt
using (_logger.BeginScope(new Dictionary<string, object?> { ["TenantId"] = "acme" }))
{
    _logger.LogInformation("Order processed");   // → Logs/acme/log-.txt
    _logger.LogError("Payment failed");           // → Logs/acme/log-.txt
}

// Logs without TenantId → Logs/log-20260531.txt (base path)
_logger.LogInformation("App started");            // → Logs/log-.txt

Fluent API

builder.Services.AddLoggerHelper(b => b
    .AddRoute("File", LogEventLevel.Information, LogEventLevel.Error)
    .ConfigureFile(f => {
        f.Path = "Logs";
        f.FileNameProperty = "TenantId";
        f.MaxOpenFiles = 128;   // LRU pool limit (default: 64)
    })
);

Configuration Options

Property Type Default Description
Path string "Logs" Directory path for log files
RollingInterval string "Day" Rolling interval: Minute, Hour, Day, Month, Year, Infinite
RetainedFileCountLimit int 7 Number of log files to retain before cleanup
Shared bool true Allow multiple processes to write to the same file
FileNameProperty string? null Log event property used to create subdirectories (e.g. "TenantId")
MaxOpenFiles int 64 Max open file handles when using FileNameProperty (LRU eviction)

Logs are written in JSON format using Serilog's JsonFormatter for structured log analysis.


Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
5.0.5 42 6/6/2026
5.0.4 48 6/5/2026
5.0.3 85 6/2/2026
5.0.2 161 6/1/2026
5.0.1 110 5/31/2026
5.0.0 99 5/31/2026
4.0.0 374 8/25/2025
3.1.5 265 6/15/2025
3.1.4 374 6/12/2025
3.1.3 374 6/11/2025
3.1.2 301 6/9/2025
3.1.1 279 6/8/2025
3.0.6 222 6/5/2025
3.0.5 202 6/5/2025
3.0.4 224 6/2/2025
3.0.3 460 6/2/2025
3.0.2 177 6/1/2025
3.0.1 177 5/30/2025
1.0.0 185 5/30/2025