SPLog 1.0.2
See the version list below for details.
dotnet add package SPLog --version 1.0.2
NuGet\Install-Package SPLog -Version 1.0.2
<PackageReference Include="SPLog" Version="1.0.2" />
<PackageVersion Include="SPLog" Version="1.0.2" />
<PackageReference Include="SPLog" />
paket add SPLog --version 1.0.2
#r "nuget: SPLog, 1.0.2"
#:package SPLog@1.0.2
#addin nuget:?package=SPLog&version=1.0.2
#tool nuget:?package=SPLog&version=1.0.2
SPLog
SPLog is a lightweight logging DLL focused on performance, simplicity, and practical file logging for .NET applications.
GitHub repository: https://github.com/cku3987/SPLog
Why SPLog
- Simple API
- Fast enough for high-volume application logging
- File logging and console logging out of the box
- External JSON configuration support
- Exception logging support
- Daily and hourly rolling
AppendandCreateNewfile conflict handling
Quick Start
using SPLog;
using var logger = SPLogFactory.Create(options =>
{
options.Name = "Core";
options.EnableConsole = true;
options.EnableFile = true;
options.FilePath = "logs";
options.TimestampFormat = "yyyy-MM-dd HH:mm:ss.fff";
});
logger.Information("application started");
logger.Warning("response delay detected");
try
{
RunProcess();
}
catch (Exception ex)
{
logger.Error(ex, "process failed");
}
Global Logger With Categories
If you want one global logger but still want subsystem names inside the log, create categories from the root logger:
using var appLog = SPLogFactory.Create(options =>
{
options.Name = "App";
options.EnableFile = true;
options.FilePath = "logs";
});
var coreLog = appLog.CreateCategory("Core");
var networkLog = appLog.CreateCategory("Network");
var socketLog = networkLog.CreateCategory("Socket");
coreLog.Information("core started");
networkLog.Warning("network delay detected");
socketLog.Error("socket closed");
This keeps one shared queue and one shared writer, while log lines are identified as App.Core, App.Network, and App.Network.Socket.
External Configuration
using var logger = SPLogFactory.CreateFromJsonFile("config/splog.core.json");
Example JSON:
{
"Name": "Core",
"MinimumLevel": "Information",
"TimestampFormat": "yyyy-MM-dd HH:mm:ss.fff",
"EnableConsole": false,
"EnableFile": true,
"FilePath": "logs",
"FileConflictMode": "Append",
"FileRollingMode": "Hourly",
"MaxFileSizeBytes": 52428800,
"MaxRollingFiles": 500,
"QueueCapacity": 8192,
"BatchSize": 10,
"FlushIntervalMs": 100,
"FileBufferSize": 65536
}
File Naming Behavior
FilePath = "logs"creates<Name>.logautomatically- Relative paths are resolved from
AppContext.BaseDirectory - Absolute paths are used as-is
Examples:
Daily + Append→Core_20260331.logDaily + CreateNew→Core_20260331.log, thenCore_20260331_001.logHourly + CreateNew→Core_20260331_13.log, thenCore_20260331_13_001.log
Validation Projects
This repository also includes validation helpers:
SPLog.TestsDeterministic correctness checksSPLog.StressRunnerStress, smoke, and long-run validation for one or many loggers at the same time
Recommended commands:
dotnet build SPLog.sln -c Release -m:1
dotnet run --project SPLog.Tests\SPLog.Tests.csproj -c Release --no-build
dotnet run --project SPLog.StressRunner\SPLog.StressRunner.csproj -c Release -- --config codex\SPLog-StressRunner.sample.json
The default stress sample includes:
- multiple logger scenarios running at the same time
- one root logger used directly and shared by multiple category scenarios
- additional independent loggers using separate file paths
- a 5-digit stress-run timestamp format for easier timing inspection
- a configuration that is safe to auto-load when launching from Visual Studio
Documentation
- English guide:
docs/SPLog-Guide-EN.html - Korean guide:
docs/SPLog-Guide-KO.html - Validation guide:
codex/SPLog-Validation-Guide-EN.md
Project Link
- GitHub: https://github.com/cku3987/SPLog
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 was computed. 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. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.