Updated extensions to services
8b7d669aea2b8b38d678c156eca205767076b2da
11 files changed
src/VanDerHeijden.Logging.File/FileLoggingBuilderExtensions.cssrc/VanDerHeijden.Logging.File/VanDerHeijden.Logging.File.csprojsrc/VanDerHeijden.Logging.MongoDb/MongoDbLoggingBuilderExtensions.cssrc/VanDerHeijden.Logging.MongoDb/VanDerHeijden.Logging.MongoDb.csprojsrc/VanDerHeijden.Logging.Redis/RedisLoggingBuilderExtensions.cssrc/VanDerHeijden.Logging.Redis/VanDerHeijden.Logging.Redis.csprojsrc/VanDerHeijden.Logging.Sql/SqlLoggingBuilderExtensions.cssrc/VanDerHeijden.Logging.Sql/VanDerHeijden.Logging.Sql.csprojsrc/VanDerHeijden.Logging/CustomLoggingExtensions.cssrc/VanDerHeijden.Logging/VanDerHeijden.Logging.csprojtests/VanDerHeijden.Logging.File.Benchmarks/VanDerHeijden.Logging.File.Benchmarks.csproj
diff --git a/src/VanDerHeijden.Logging.File/FileLoggingBuilderExtensions.cs b/src/VanDerHeijden.Logging.File/FileLoggingBuilderExtensions.cs
index 26bf378..3a38daa 100644
--- a/src/VanDerHeijden.Logging.File/FileLoggingBuilderExtensions.cs
+++ b/src/VanDerHeijden.Logging.File/FileLoggingBuilderExtensions.cs
@@ -13,16 +13,16 @@ public static class FileLoggingBuilderExtensions
/// Adds a file logger that writes log messages to daily rotating text files inside
/// <paramref name="logDirectory"/>.
/// </summary>
- /// <param name="builder">The <see cref="ILoggingBuilder"/> to configure.</param>
+ /// <param name="services">The <see cref="IServiceCollection"/> to configure.</param>
/// <param name="logDirectory">
/// Path to the directory where log files are written.
/// The directory is created automatically if it does not exist.
/// Defaults to <c>"Logs"</c>.
/// </param>
- /// <returns>The <paramref name="builder"/> so that additional calls can be chained.</returns>
- public static ILoggingBuilder AddFileLogger(this ILoggingBuilder builder, string logDirectory = "Logs")
+ /// <returns>The <paramref name="services"/> so that additional calls can be chained.</returns>
+ public static IServiceCollection AddFileLogger(this IServiceCollection services, string logDirectory = "Logs")
{
- builder.Services.AddSingleton<ILoggerProvider>(_ =>
+ services.AddSingleton<ILoggerProvider>(_ =>
{
var logWriter = new FileLogWriter(logDirectory);
var batchedLogger = new BatchedLogger<string>(logWriter, fullMode: BoundedChannelFullMode.Wait);
@@ -32,6 +32,6 @@ public static class FileLoggingBuilderExtensions
$"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} {message}{Environment.NewLine}"
);
});
- return builder;
+ return services;
}
}
diff --git a/src/VanDerHeijden.Logging.File/VanDerHeijden.Logging.File.csproj b/src/VanDerHeijden.Logging.File/VanDerHeijden.Logging.File.csproj
index 25526a1..5cb7466 100644
--- a/src/VanDerHeijden.Logging.File/VanDerHeijden.Logging.File.csproj
+++ b/src/VanDerHeijden.Logging.File/VanDerHeijden.Logging.File.csproj
@@ -6,7 +6,7 @@
<Nullable>enable</Nullable>
<PackageId>VanDerHeijden.Logging.File</PackageId>
- <Version>10.0.2</Version>
+ <Version>10.0.3</Version>
<Authors>VanDerHeijden</Authors>
<Description>File log writer for VanDerHeijden.Logging: writes batched log entries to daily rotating text files.</Description>
<PackageTags>logging;file;batched</PackageTags>
diff --git a/src/VanDerHeijden.Logging.MongoDb/MongoDbLoggingBuilderExtensions.cs b/src/VanDerHeijden.Logging.MongoDb/MongoDbLoggingBuilderExtensions.cs
index bccb7f0..2863d9a 100644
--- a/src/VanDerHeijden.Logging.MongoDb/MongoDbLoggingBuilderExtensions.cs
+++ b/src/VanDerHeijden.Logging.MongoDb/MongoDbLoggingBuilderExtensions.cs
@@ -13,12 +13,12 @@ public static class MongoDbLoggingBuilderExtensions
/// <summary>
/// Adds a MongoDB logger that inserts log entries into the specified collection in batches.
/// </summary>
- /// <param name="builder">The <see cref="ILoggingBuilder"/> to configure.</param>
+ /// <param name="services">The <see cref="IServiceCollection"/> to configure.</param>
/// <param name="collection">The MongoDB collection that will receive <see cref="LogEntry"/> documents.</param>
- /// <returns>The <paramref name="builder"/> so that additional calls can be chained.</returns>
- public static ILoggingBuilder AddMongoDbLogger(this ILoggingBuilder builder, IMongoCollection<LogEntry> collection)
+ /// <returns>The <paramref name="services"/> so that additional calls can be chained.</returns>
+ public static IServiceCollection AddMongoDbLogger(this IServiceCollection services, IMongoCollection<LogEntry> collection)
{
- builder.Services.AddSingleton<ILoggerProvider>(_ =>
+ services.AddSingleton<ILoggerProvider>(_ =>
{
var logWriter = new MongoDbLogWriter(collection);
var batchedLogger = new BatchedLogger<LogEntry>(logWriter, batchSize: 100, maxIdleMs: 3000, fullMode: BoundedChannelFullMode.DropOldest);
@@ -33,6 +33,6 @@ public static class MongoDbLoggingBuilderExtensions
}
);
});
- return builder;
+ return services;
}
}
diff --git a/src/VanDerHeijden.Logging.MongoDb/VanDerHeijden.Logging.MongoDb.csproj b/src/VanDerHeijden.Logging.MongoDb/VanDerHeijden.Logging.MongoDb.csproj
index 33d3035..57b2e63 100644
--- a/src/VanDerHeijden.Logging.MongoDb/VanDerHeijden.Logging.MongoDb.csproj
+++ b/src/VanDerHeijden.Logging.MongoDb/VanDerHeijden.Logging.MongoDb.csproj
@@ -6,7 +6,7 @@
<Nullable>enable</Nullable>
<PackageId>VanDerHeijden.Logging.MongoDb</PackageId>
- <Version>10.0.2</Version>
+ <Version>10.0.3</Version>
<Authors>VanDerHeijden</Authors>
<Description>MongoDB log writer for VanDerHeijden.Logging: writes batched log entries to a MongoDB collection.</Description>
<PackageTags>logging;mongodb;batched</PackageTags>
diff --git a/src/VanDerHeijden.Logging.Redis/RedisLoggingBuilderExtensions.cs b/src/VanDerHeijden.Logging.Redis/RedisLoggingBuilderExtensions.cs
index d01744f..0a9bc7e 100644
--- a/src/VanDerHeijden.Logging.Redis/RedisLoggingBuilderExtensions.cs
+++ b/src/VanDerHeijden.Logging.Redis/RedisLoggingBuilderExtensions.cs
@@ -13,21 +13,21 @@ public static class RedisLoggingBuilderExtensions
/// <summary>
/// Adds a Redis logger that pushes log entries as JSON to a Redis list using <c>RPUSH</c>.
/// </summary>
- /// <param name="builder">The <see cref="ILoggingBuilder"/> to configure.</param>
+ /// <param name="services">The <see cref="IServiceCollection"/> to configure.</param>
/// <param name="database">The Redis database instance used for all write operations.</param>
/// <param name="listKey">The Redis key of the list that receives log entries. Defaults to <c>"logs"</c>.</param>
/// <param name="ttl">
/// Optional time-to-live applied to <paramref name="listKey"/> after each batch write.
/// When <see langword="null"/> (the default) the key never expires.
/// </param>
- /// <returns>The <paramref name="builder"/> so that additional calls can be chained.</returns>
- public static ILoggingBuilder AddRedisLogger(
- this ILoggingBuilder builder,
+ /// <returns>The <paramref name="services"/> so that additional calls can be chained.</returns>
+ public static IServiceCollection AddRedisLogger(
+ this IServiceCollection services,
IDatabase database,
string listKey = "logs",
TimeSpan? ttl = null)
{
- builder.Services.AddSingleton<ILoggerProvider>(_ =>
+ services.AddSingleton<ILoggerProvider>(_ =>
{
var logWriter = new RedisLogWriter(database, listKey, ttl);
var batchedLogger = new BatchedLogger<RedisLogEntry>(logWriter, batchSize: 200, maxIdleMs: 2000, fullMode: BoundedChannelFullMode.DropOldest);
@@ -42,6 +42,6 @@ public static class RedisLoggingBuilderExtensions
}
);
});
- return builder;
+ return services;
}
}
diff --git a/src/VanDerHeijden.Logging.Redis/VanDerHeijden.Logging.Redis.csproj b/src/VanDerHeijden.Logging.Redis/VanDerHeijden.Logging.Redis.csproj
index 2416ca9..83d8dff 100644
--- a/src/VanDerHeijden.Logging.Redis/VanDerHeijden.Logging.Redis.csproj
+++ b/src/VanDerHeijden.Logging.Redis/VanDerHeijden.Logging.Redis.csproj
@@ -6,7 +6,7 @@
<Nullable>enable</Nullable>
<PackageId>VanDerHeijden.Logging.Redis</PackageId>
- <Version>10.0.2</Version>
+ <Version>10.0.3</Version>
<Authors>VanDerHeijden</Authors>
<Description>Redis log writer for VanDerHeijden.Logging: writes batched log entries to a Redis list using RPUSH.</Description>
<PackageTags>logging;redis;batched</PackageTags>
@@ -22,7 +22,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.3" />
- <PackageReference Include="StackExchange.Redis" Version="2.8.24" />
+ <PackageReference Include="StackExchange.Redis" Version="2.11.3" />
</ItemGroup>
<ItemGroup>
diff --git a/src/VanDerHeijden.Logging.Sql/SqlLoggingBuilderExtensions.cs b/src/VanDerHeijden.Logging.Sql/SqlLoggingBuilderExtensions.cs
index d3e6889..9791868 100644
--- a/src/VanDerHeijden.Logging.Sql/SqlLoggingBuilderExtensions.cs
+++ b/src/VanDerHeijden.Logging.Sql/SqlLoggingBuilderExtensions.cs
@@ -12,19 +12,19 @@ public static class SqlLoggingBuilderExtensions
/// <summary>
/// Adds a SQL Server logger that bulk-inserts log entries into the specified table using <c>SqlBulkCopy</c>.
/// </summary>
- /// <param name="builder">The <see cref="ILoggingBuilder"/> to configure.</param>
+ /// <param name="services">The <see cref="IServiceCollection"/> to configure.</param>
/// <param name="connectionString">The SQL Server connection string.</param>
/// <param name="tableName">
/// The destination table name. Defaults to <c>"Logs"</c>.
/// See <see cref="SqlLogWriter"/> for the expected schema.
/// </param>
- /// <returns>The <paramref name="builder"/> so that additional calls can be chained.</returns>
- public static ILoggingBuilder AddSqlLogger(
- this ILoggingBuilder builder,
+ /// <returns>The <paramref name="services"/> so that additional calls can be chained.</returns>
+ public static IServiceCollection AddSqlLogger(
+ this IServiceCollection services,
string connectionString,
string tableName = "Logs")
{
- builder.Services.AddSingleton<ILoggerProvider>(_ =>
+ services.AddSingleton<ILoggerProvider>(_ =>
{
var logWriter = new SqlLogWriter(connectionString, tableName);
var batchedLogger = new BatchedLogger<SqlLogEntry>(logWriter, batchSize: 200, maxIdleMs: 4000, fullMode: BoundedChannelFullMode.Wait);
@@ -39,6 +39,6 @@ public static class SqlLoggingBuilderExtensions
}
);
});
- return builder;
+ return services;
}
}
diff --git a/src/VanDerHeijden.Logging.Sql/VanDerHeijden.Logging.Sql.csproj b/src/VanDerHeijden.Logging.Sql/VanDerHeijden.Logging.Sql.csproj
index 1a8b0bc..f69b0a2 100644
--- a/src/VanDerHeijden.Logging.Sql/VanDerHeijden.Logging.Sql.csproj
+++ b/src/VanDerHeijden.Logging.Sql/VanDerHeijden.Logging.Sql.csproj
@@ -6,7 +6,7 @@
<Nullable>enable</Nullable>
<PackageId>VanDerHeijden.Logging.Sql</PackageId>
- <Version>10.0.2</Version>
+ <Version>10.0.3</Version>
<Authors>VanDerHeijden</Authors>
<Description>SQL Server log writer for VanDerHeijden.Logging: writes batched log entries to a SQL Server table using SqlBulkCopy.</Description>
<PackageTags>logging;sql;sqlserver;batched</PackageTags>
@@ -20,7 +20,7 @@
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="Microsoft.Data.SqlClient" Version="6.0.1" />
+ <PackageReference Include="Microsoft.Data.SqlClient" Version="6.1.4" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.3" />
</ItemGroup>
diff --git a/src/VanDerHeijden.Logging/CustomLoggingExtensions.cs b/src/VanDerHeijden.Logging/CustomLoggingExtensions.cs
new file mode 100644
index 0000000..01ac3a9
--- /dev/null
+++ b/src/VanDerHeijden.Logging/CustomLoggingExtensions.cs
@@ -0,0 +1,38 @@
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+
+namespace VanDerHeijden.Logging;
+
+/// <summary>
+/// Adding SimpleConsole logging and set DefaultLogLevel
+/// </summary>
+public static class CustomLoggingExtensions
+{
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="services"></param>
+ /// <param name="ConsoleLogging"></param>
+ /// <param name="DefaultLogLevel">Trace, Debug, Information, Warning, Error, Critical, None</param>
+ /// <returns>The <paramref name="services"/> so that additional calls can be chained.</returns>
+ public static IServiceCollection AddCustomLogging(this IServiceCollection services, bool ConsoleLogging = true, string DefaultLogLevel = "Information")
+ {
+ services.AddLogging(logging =>
+ {
+ logging.ClearProviders();
+ logging.AddFilter("Microsoft.AspNetCore.Watch", LogLevel.None);
+ logging.AddFilter("Microsoft.AspNetCore.Watch.BrowserRefresh", LogLevel.None);
+ if (ConsoleLogging)
+ {
+ logging.AddSimpleConsole(c =>
+ {
+ c.SingleLine = true;
+ c.TimestampFormat = "HH:mm:ss ";
+ });
+ }
+ LogLevel minimumLevel = Enum.TryParse<LogLevel>(DefaultLogLevel, true, out LogLevel parsedLevel) ? parsedLevel : LogLevel.Information;
+ logging.SetMinimumLevel(minimumLevel);
+ });
+ return services;
+ }
+}
\ No newline at end of file
diff --git a/src/VanDerHeijden.Logging/VanDerHeijden.Logging.csproj b/src/VanDerHeijden.Logging/VanDerHeijden.Logging.csproj
index 198a2d7..53cb495 100644
--- a/src/VanDerHeijden.Logging/VanDerHeijden.Logging.csproj
+++ b/src/VanDerHeijden.Logging/VanDerHeijden.Logging.csproj
@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
@@ -6,7 +6,7 @@
<Nullable>enable</Nullable>
<PackageId>VanDerHeijden.Logging</PackageId>
- <Version>10.0.2</Version>
+ <Version>10.0.3</Version>
<Authors>VanDerHeijden</Authors>
<Description>Core batched logging abstractions for .NET: IBatchedLogWriter<T>, BatchedLogger<T> and BatchedLoggerProvider<T>.</Description>
<PackageTags>logging;batched;core</PackageTags>
@@ -20,7 +20,10 @@
</PropertyGroup>
<ItemGroup>
+ <PackageReference Include="Microsoft.Extensions.Configuration" Version="10.0.3" />
+ <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.3" />
+ <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.3" />
</ItemGroup>
<ItemGroup>
diff --git a/tests/VanDerHeijden.Logging.File.Benchmarks/VanDerHeijden.Logging.File.Benchmarks.csproj b/tests/VanDerHeijden.Logging.File.Benchmarks/VanDerHeijden.Logging.File.Benchmarks.csproj
index 422e6d7..4473c4d 100644
--- a/tests/VanDerHeijden.Logging.File.Benchmarks/VanDerHeijden.Logging.File.Benchmarks.csproj
+++ b/tests/VanDerHeijden.Logging.File.Benchmarks/VanDerHeijden.Logging.File.Benchmarks.csproj
@@ -10,7 +10,7 @@
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
+ <PackageReference Include="BenchmarkDotNet" Version="0.15.8" />
</ItemGroup>
<ItemGroup>