SyslogLogging 2.1.0

dotnet add package SyslogLogging --version 2.1.0
                    
NuGet\Install-Package SyslogLogging -Version 2.1.0
                    
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="SyslogLogging" Version="2.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SyslogLogging" Version="2.1.0" />
                    
Directory.Packages.props
<PackageReference Include="SyslogLogging" />
                    
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 SyslogLogging --version 2.1.0
                    
#r "nuget: SyslogLogging, 2.1.0"
                    
#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 SyslogLogging@2.1.0
                    
#: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=SyslogLogging&version=2.1.0
                    
Install as a Cake Addin
#tool nuget:?package=SyslogLogging&version=2.1.0
                    
Install as a Cake Tool

<img src="assets/logo.png" alt="SyslogLogging Logo" width="128" height="128" />

SyslogLogging

NuGet Version NuGet Downloads

SyslogLogging is a C# logging library for syslog, console, and file destinations. It supports synchronous and asynchronous logging, structured log entries, Microsoft.Extensions.Logging integration, and file retention management.

Current release: 2.1.0

Target builds:

  • .NET Standard 2.0
  • .NET Standard 2.1
  • .NET Framework 4.6.2
  • .NET Framework 4.8
  • .NET 8.0
  • .NET 10.0

Highlights

  • RFC 3164 syslog output
  • Console and file logging in the same logger
  • Structured logging with LogEntry
  • Fluent structured logging builder
  • Microsoft.Extensions.Logging provider and DI registration
  • Configurable header format tokens including {app}, {pid}, {source}, and {correlation}
  • Configurable exception severity
  • Automatic retention cleanup for dated log files
  • Shared Touchstone test coverage exposed through CLI, xUnit, and NUnit runners

What's New in 2.1.0

  • Added LoggingSettings.ApplicationName so callers can explicitly control the {app} header token without changing the existing logging API.
  • Changed {app} fallback resolution to use Assembly.GetEntryAssembly()?.GetName().Name before falling back to the current process name.
  • Fixed .Exception() and .ExceptionAsync() so they honor LoggingSettings.ExceptionSeverity.
  • Fixed concurrent async file logging so writes are serialized correctly under load.
  • Migrated tests to Touchstone shared suites with CLI, xUnit, and NUnit runners on net8.0 and net10.0.

Installation

dotnet add package SyslogLogging

Quick Start

Simple Logging

using SyslogLogging;

LoggingModule log = new LoggingModule();
await log.InfoAsync("Hello, world!");

Syslog Logging

using SyslogLogging;

LoggingModule log = new LoggingModule("mysyslogserver", 514);
await log.WarnAsync("Rate limit exceeded");

File Logging

using SyslogLogging;

LoggingModule log = new LoggingModule("./logs/app.log", FileLoggingMode.SingleLogFile);
await log.InfoAsync("File-only message");

Structured Logging

LogEntry

LogEntry entry = new LogEntry(Severity.Error, "Payment processing failed")
    .WithProperty("OrderId", orderId)
    .WithProperty("Amount", amount)
    .WithProperty("Currency", "USD")
    .WithCorrelationId(correlationId)
    .WithSource("PaymentService")
    .WithException(exception);

await log.LogEntryAsync(entry);

Fluent Builder

await log.BeginStructuredLog(Severity.Info, "User login")
    .WithProperty("UserId", userId)
    .WithProperty("IpAddress", ipAddress)
    .WithCorrelationId(correlationId)
    .WriteAsync();

Microsoft.Extensions.Logging Integration

services.AddLogging(builder =>
{
    builder.AddSyslog("syslogserver", 514);
});

Multiple syslog targets are also supported:

services.AddLogging(builder =>
{
    builder.AddSyslog(new List<SyslogServer>
    {
        new SyslogServer("primary-log", 514),
        new SyslogServer("backup-log", 514)
    }, enableConsole: true);
});

Header Formatting

log.Settings.HeaderFormat = "{ts} {host}[{pid}] {sev} [T:{thread}] [{app}]";
log.Settings.ApplicationName = "MyService";
log.Settings.TimestampFormat = "yyyy-MM-dd HH:mm:ss.fff";
log.Settings.UseUtcTime = true;

Available header variables:

Variable Description Example
{ts} Timestamp 2024-01-15 14:30:25.123
{host} Machine name web-server-01
{thread} Thread ID 12
{sev} Severity name Info
{level} Severity number 6
{pid} Process ID 1234
{user} Current username john.doe
{app} Application name MyWebApp
{domain} App domain MyWebApp.exe
{cpu} CPU core count 8
{mem} Memory usage in MB 256
{uptime} Process uptime 02:45:30
{correlation} Correlation ID abc-123-def
{source} Log source UserService

{app} resolves in this order:

  1. log.Settings.ApplicationName
  2. Assembly.GetEntryAssembly()?.GetName().Name
  3. Current process name

File Retention

LoggingModule log = new LoggingModule("./logs/app.log", FileLoggingMode.FileWithDate, true);
LoggingSettings settings = log.Settings;
settings.LogRetentionDays = 30;
log.Settings = settings;

Retention cleanup only applies when using FileLoggingMode.FileWithDate. The cleanup timer removes files matching the dated filename pattern when they are older than the configured retention period.

Testing

Run the shared Touchstone suite through the CLI runner:

dotnet run --project src/Test.Automated/Test.Automated.csproj -f net10.0
dotnet run --project src/Test.Automated/Test.Automated.csproj -f net8.0

Run the same shared descriptors through xUnit and NUnit:

dotnet test src/Test.Xunit/Test.Xunit.csproj
dotnet test src/Test.Nunit/Test.Nunit.csproj

The shared suite covers:

  • Constructor and settings validation
  • Severity helpers
  • Structured and fluent logging APIs
  • Exception severity behavior
  • File output and retention cleanup
  • Message ordering and concurrency
  • Syslog delivery and error handling
  • Microsoft.Extensions.Logging integration

The repository also includes SyslogServer, a simple utility application for receiving syslog traffic during development and testing.

Version History

See CHANGELOG.md for release details.

Help

File issues or feature requests at:

https://github.com/jchristn/LoggingModule/issues

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  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 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 is compatible.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (22)

Showing the top 5 NuGet packages that depend on SyslogLogging:

Package Downloads
Omnicx.WebStore.Core

OmniCX WebStore Core contains the Controllers, API SDK and Models required to run the MVC Views of the WebStore.

BigQ.dll

BigQ is a messaging platform using TCP sockets and websockets featuring sync, async, channel, and private communications.

ContainerFS

Self-contained single-user file system written in C#.

Less3

<3 Less3 is S3-compatible object storage that you can run on your laptop, server, or anywhere you like.

LiteGraph

LiteGraph is a property graph database with support for graph relationships, tags, labels, metadata, data, and vectors.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on SyslogLogging:

Repository Stars
litegraphdb/litegraph
Lightweight graph database with relational, vector, and MCP support, designed to power knowledge and artificial intelligence persistence and retrieval.
Version Downloads Last Updated
2.1.0 100 5/4/2026
2.0.13 1,862 12/28/2025
2.0.12 466 12/24/2025
2.0.11 6,021 10/7/2025
2.0.10 574 9/22/2025
2.0.9 236 9/22/2025
2.0.8 9,742 1/7/2025
2.0.7 5,483 12/23/2024
2.0.6 873 10/17/2024
2.0.5 598 9/10/2024
2.0.4 271 9/10/2024
2.0.3 272 9/10/2024
2.0.2 16,756 8/1/2023
2.0.1.8 10,284 10/6/2022
2.0.1.7 22,029 11/19/2021
2.0.1.6 1,609 11/12/2021
2.0.1.5 4,487 9/13/2021
2.0.1.4 25,465 5/20/2021
2.0.1.3 4,723 3/11/2021
2.0.1.2 1,346 3/11/2021
Loading failed

Added ApplicationName override, fixed ExceptionSeverity handling, improved concurrent async file logging, and migrated tests to Touchstone