SimplyWorks.Logger.Console
8.1.8
See the version list below for details.
dotnet add package SimplyWorks.Logger.Console --version 8.1.8
NuGet\Install-Package SimplyWorks.Logger.Console -Version 8.1.8
<PackageReference Include="SimplyWorks.Logger.Console" Version="8.1.8" />
<PackageVersion Include="SimplyWorks.Logger.Console" Version="8.1.8" />
<PackageReference Include="SimplyWorks.Logger.Console" />
paket add SimplyWorks.Logger.Console --version 8.1.8
#r "nuget: SimplyWorks.Logger.Console, 8.1.8"
#:package SimplyWorks.Logger.Console@8.1.8
#addin nuget:?package=SimplyWorks.Logger.Console&version=8.1.8
#tool nuget:?package=SimplyWorks.Logger.Console&version=8.1.8
SW-Logger
| Package | Version | Downloads |
|---|---|---|
| SimplyWorks.Logger.ElasticSearch | ||
| SimplyWorks.Logger.Console |
Overview
SW-Logger is a .NET logging library built on top of Serilog that provides structured logging capabilities for .NET 8.0 applications. It offers two main logging sinks:
- Console Logger: Provides enhanced console logging with structured output and request context enrichment
- ElasticSearch Logger: Enables logging to ElasticSearch with data streams, lifecycle policies, and correlation tracking
Features
- 🎯 Structured Logging: Built on Serilog for structured, searchable logs
- 🔍 Request Context Enrichment: Automatically enriches logs with correlation IDs and user information
- 🗂️ ElasticSearch Integration: Direct logging to ElasticSearch with data streams and index lifecycle management
- 📊 Console Logging: Enhanced console output with JSON formatting in production
- ⚙️ Configuration-Driven: Flexible configuration through
appsettings.json - 🔄 Request Logging: Built-in HTTP request/response logging
- 🏷️ Environment Support: Environment-specific logging configurations
Installation
Console Logger
dotnet add package SimplyWorks.Logger.Console
ElasticSearch Logger
dotnet add package SimplyWorks.Logger.ElasticSearch
Quick Start
Console Logger Setup
1. Configure Services
using SW.Logger.Console;
public void ConfigureServices(IServiceCollection services)
{
services.AddSWConsoleLogger(options =>
{
options.ApplicationName = "MyApp";
options.LoggingLevel = 1; // Information level
});
}
2. Configure Application Pipeline
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSWConsoleLogger();
// ... other middleware
}
ElasticSearch Logger Setup
1. Configure Host Builder
using SW.Logger.ElasticSerach;
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSwElasticSearchLogger(options =>
{
options.ApplicationName = "MyApp";
options.ElasticsearchUrl = "https://localhost:9200";
});
2. Configure Application Pipeline
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRequestContextLogEnricher();
// ... other middleware
}
Configuration
appsettings.json Configuration
{
"SwLogger": {
"ApplicationName": "MyApplication",
"LoggingLevel": 1,
"ElasticsearchUrl": "https://localhost:9200",
"ElasticsearchUser": "elastic",
"ElasticsearchPassword": "password",
"ElasticsearchEnvironments": "Development,Staging,Production",
"ElasticsearchCertificatePath": "/path/to/certificate.crt",
"ElasticsearchDeleteIndexAfterDays": 90
}
}
Configuration Options
Console Logger Options
ApplicationName: Name of your application (default: "unknownapp")ApplicationVersion: Version of your application (auto-detected from assembly)LoggingLevel: Serilog logging level (1=Information, 2=Debug, etc.)Environments: Comma-separated list of environments where logging is active
ElasticSearch Logger Options
ApplicationName: Name of your application (used for index naming)ApplicationVersion: Version of your applicationLoggingLevel: Serilog logging levelElasticsearchUrl: ElasticSearch cluster URLElasticsearchUser: ElasticSearch usernameElasticsearchPassword: ElasticSearch passwordElasticsearchEnvironments: Environments where ElasticSearch logging is enabledElasticsearchCertificatePath: Path to SSL certificate (optional)ElasticsearchDeleteIndexAfterDays: Days logs are kept before being deleted (default: 90). Set to0to keep logs forever.
Usage Examples
Basic Logging
using Microsoft.Extensions.Logging;
public class HomeController : ControllerBase
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Get()
{
_logger.LogInformation("Processing GET request for Home");
try
{
// Your logic here
return Ok();
}
catch (Exception ex)
{
_logger.LogError(ex, "Error processing GET request");
throw;
}
}
}
Structured Logging with Context
_logger.LogInformation("User {UserId} accessed resource {ResourceId}",
userId, resourceId);
_logger.LogWarning("Failed login attempt for {Username} from {IpAddress}",
username, ipAddress);
Project Structure
SW-Logger/
├── SW.Logger.Console/ # Console logging package
│ ├── IAppBuilderExtensions.cs
│ ├── IServiceCollectionExtensions.cs
│ └── LoggerOptions.cs
├── SW.Logger.ElasticSearch/ # ElasticSearch logging package
│ ├── IAppBuilderExtensions.cs
│ ├── IHostBuilderExtensions.cs
│ ├── LoggerOptions.cs
│ └── StringExtensions.cs
└── SW.Logger.SampleWeb/ # Sample web application
├── Program.cs
├── Startup.cs
└── appsettings.json
ElasticSearch Features
Data Streams
The ElasticSearch logger uses data streams with the naming pattern: logs-{application-name}-{environment}
Index Lifecycle Management
On startup, and every 24 hours after, the logger creates an ILM policy named logs-{application-name}-{environment}-retention
and applies it to its data stream. The policy rolls the data stream over monthly (or at 50 GB per shard) and deletes data
ElasticsearchDeleteIndexAfterDays after rollover. Because it's applied to the data stream itself rather than through an
index template, it isn't affected by which index template wins for the stream.
Authentication
Supports both basic authentication and certificate-based authentication for ElasticSearch clusters.
Dependencies
Console Logger
- Serilog.AspNetCore (8.0.3)
- SimplyWorks.PrimitiveTypes (8.0.0)
ElasticSearch Logger
- Elastic.Serilog.Sinks (8.18.2)
- NEST (7.17.5)
- Serilog.AspNetCore (8.0.3)
- SimplyWorks.PrimitiveTypes (8.0.0)
Requirements
- .NET 8.0 or higher
- For ElasticSearch logging: ElasticSearch cluster (7.x or 8.x)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
If you encounter any bugs or have feature requests, please submit an issue on GitHub.
| 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
- Serilog.AspNetCore (>= 8.0.3)
- SimplyWorks.PrimitiveTypes (>= 8.1.2)
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 |
|---|---|---|
| 10.0.3 | 249 | 10/31/2026 |
| 10.0.2 | 139 | 10/30/2026 |
| 10.0.1 | 98 | 10/25/2026 |
| 10.0.0 | 326 | 10/11/2026 |
| 8.1.10 | 135 | 10/11/2026 |
| 8.1.9 | 117 | 10/5/2026 |
| 8.1.8 | 110 | 10/4/2026 |
| 8.1.7 | 115 | 9/29/2026 |
| 8.1.6 | 162 | 8/26/2026 |
| 8.1.5 | 449 | 7/14/2026 |
| 8.1.4 | 143 | 7/13/2026 |
| 8.1.3 | 154 | 7/13/2026 |
| 8.1.2 | 167 | 6/25/2026 |
| 8.1.1 | 184 | 1/23/2026 |
| 8.1.0 | 527 | 9/16/2025 |
| 8.0.12 | 293 | 7/8/2025 |
| 8.0.10 | 644 | 6/22/2025 |
| 8.0.6 | 621 | 2/3/2025 |
| 8.0.5 | 211 | 2/3/2025 |