diff --git a/CHANGELOG.MD b/CHANGELOG.MD index 925e84a7..1b075546 100644 --- a/CHANGELOG.MD +++ b/CHANGELOG.MD @@ -4,6 +4,16 @@ See also [releases](https://github.com/NLog/NLog.Web/releases) and [milestones]( Date format: (year/month/day) +### Version 5.5 (2025/05/29) + +- **NLog.Web.AspNetCore** + - [#1078](https://github.com/NLog/NLog.Web/pull/1080) Added UseNLog extension method for IHostApplicationBuilder (#1080) (@snakefoot) + - [#1078](https://github.com/NLog/NLog.Web/pull/1080) Added AddNLogWeb extension method for IServiceCollection (#1080) (@snakefoot) + - [#1078](https://github.com/NLog/NLog.Web/pull/1080) Updated dependency NLog.Extensions.Logging v5.5 (#1080) (@snakefoot) + +- **NLog.Web** + - [#1078](https://github.com/NLog/NLog.Web/pull/1080) Updated dependency NLog v5.5 (#1080) (@snakefoot) + ### Version 5.4 (2025/02/02) - **NLog.Web.AspNetCore** diff --git a/build.ps1 b/build.ps1 index b7573a23..00ac9c90 100644 --- a/build.ps1 +++ b/build.ps1 @@ -2,7 +2,7 @@ # creates NuGet package at \artifacts dotnet --version -$versionPrefix = "5.4.0" # Also update version for minor versions in appveyor.yml +$versionPrefix = "5.5.0" # Also update version for minor versions in appveyor.yml $versionSuffix = "" $versionFile = $versionPrefix + "." + ${env:APPVEYOR_BUILD_NUMBER} if ($env:APPVEYOR_PULL_REQUEST_NUMBER) { diff --git a/examples/ASP.NET 4.6.1/Visual Studio 2017/ASP.NET 4.6.1 - VS2017/ASP.NET 4.6.1 - VS2017.csproj b/examples/ASP.NET 4.6.1/Visual Studio 2017/ASP.NET 4.6.1 - VS2017/ASP.NET 4.6.1 - VS2017.csproj index 5677b3cd..9a6f5be7 100644 --- a/examples/ASP.NET 4.6.1/Visual Studio 2017/ASP.NET 4.6.1 - VS2017/ASP.NET 4.6.1 - VS2017.csproj +++ b/examples/ASP.NET 4.6.1/Visual Studio 2017/ASP.NET 4.6.1 - VS2017/ASP.NET 4.6.1 - VS2017.csproj @@ -49,7 +49,7 @@ ..\..\..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll - ..\..\..\..\packages\NLog.5.4.0\lib\net46\NLog.dll + ..\..\..\..\packages\NLog.5.5.0\lib\net46\NLog.dll diff --git a/examples/ASP.NET 4.6.1/Visual Studio 2017/ASP.NET 4.6.1 - VS2017/packages.config b/examples/ASP.NET 4.6.1/Visual Studio 2017/ASP.NET 4.6.1 - VS2017/packages.config index 6b862a3e..3a901a9b 100644 --- a/examples/ASP.NET 4.6.1/Visual Studio 2017/ASP.NET 4.6.1 - VS2017/packages.config +++ b/examples/ASP.NET 4.6.1/Visual Studio 2017/ASP.NET 4.6.1 - VS2017/packages.config @@ -11,6 +11,6 @@ - + \ No newline at end of file diff --git a/src/NLog.Web.AspNetCore/AspNetExtensions.cs b/src/NLog.Web.AspNetCore/AspNetExtensions.cs index c458676e..339b5dfa 100644 --- a/src/NLog.Web.AspNetCore/AspNetExtensions.cs +++ b/src/NLog.Web.AspNetCore/AspNetExtensions.cs @@ -289,6 +289,52 @@ public static ILoggingBuilder AddNLogWeb(this ILoggingBuilder builder, LogFactor return builder; } + /// + /// Enable NLog as logging provider for Microsoft Extension Logging + /// + /// + /// IServiceCollection for chaining + public static IServiceCollection AddNLogWeb(this IServiceCollection collection) + { + return AddNLogWeb(collection, NLogAspNetCoreOptions.Default); + } + + /// + /// Enable NLog as logging provider for Microsoft Extension Logging + /// + /// + /// NLog Logging Provider options + /// IServiceCollection for chaining + public static IServiceCollection AddNLogWeb(this IServiceCollection collection, NLogAspNetCoreOptions options) + { + Guard.ThrowIfNull(collection); + AddNLogLoggerProvider(collection, null, null, options, CreateNLogLoggerProvider); + return collection; + } + + /// + /// Enable NLog as logging provider for Microsoft Extension Logging + /// + /// + /// NLog Logging Provider options + /// Initialize NLog LogFactory with NLog LoggingConfiguration. + /// IServiceCollection for chaining + public static IServiceCollection AddNLogWeb(this IServiceCollection collection, NLogAspNetCoreOptions options, Func factoryBuilder) + { + Guard.ThrowIfNull(collection); + Guard.ThrowIfNull(factoryBuilder); + AddNLogLoggerProvider(collection, null, null, options, (serviceProvider, config, env, opt) => + { + config = SetupNLogConfigSettings(serviceProvider, config, LogManager.LogFactory); + + // Delay initialization of targets until we have loaded config-settings + var logFactory = factoryBuilder(serviceProvider); + var provider = CreateNLogLoggerProvider(serviceProvider, config, env, options, logFactory); + return provider; + }); + return collection; + } + /// /// Enable NLog as logging provider for Microsoft Extension Logging. /// @@ -335,6 +381,55 @@ public static IHostBuilder UseNLog(this IHostBuilder builder, NLogAspNetCoreOpti return builder; } +#if NET8_0_OR_GREATER + /// + /// Enable NLog as logging provider for Microsoft Extension Logging + /// + /// + /// IHostApplicationBuilder for chaining + public static IHostApplicationBuilder UseNLog(this IHostApplicationBuilder builder) + { + Guard.ThrowIfNull(builder); + return builder.UseNLog(NLogAspNetCoreOptions.Default); + } + + /// + /// Enable NLog as logging provider for Microsoft Extension Logging + /// + /// + /// Options for registration of the NLog LoggingProvider and enabling features. + /// IHostApplicationBuilder for chaining + public static IHostApplicationBuilder UseNLog(this IHostApplicationBuilder builder, NLogAspNetCoreOptions options) + { + Guard.ThrowIfNull(builder); + AddNLogLoggerProvider(builder.Services, builder.Configuration, builder.Environment, options, CreateNLogLoggerProvider); + return builder; + } + + /// + /// Enable NLog as logging provider for Microsoft Extension Logging + /// + /// + /// NLogProviderOptions object to configure NLog behavior + /// Initialize NLog LogFactory with NLog LoggingConfiguration. + /// IHostApplicationBuilder for chaining + public static IHostApplicationBuilder UseNLog(this IHostApplicationBuilder builder, NLogAspNetCoreOptions options, Func factoryBuilder) + { + Guard.ThrowIfNull(builder); + Guard.ThrowIfNull(factoryBuilder); + + AddNLogLoggerProvider(builder.Services, builder.Configuration, builder.Environment, options, (serviceProvider, config, env, options) => + { + config = SetupNLogConfigSettings(serviceProvider, config, LogManager.LogFactory); + // Delay initialization of targets until we have loaded config-settings + var logFactory = factoryBuilder(serviceProvider); + var provider = CreateNLogLoggerProvider(serviceProvider, config, env, options, logFactory); + return provider; + }); + return builder; + } +#endif + private static void AddNLogLoggerProvider(IServiceCollection services, IConfiguration hostConfiguration, IHostEnvironment hostEnvironment, NLogAspNetCoreOptions options, Func factory) { options = options ?? NLogAspNetCoreOptions.Default; diff --git a/src/NLog.Web.AspNetCore/NLog.Web.AspNetCore.csproj b/src/NLog.Web.AspNetCore/NLog.Web.AspNetCore.csproj index f968e541..5c112f7e 100644 --- a/src/NLog.Web.AspNetCore/NLog.Web.AspNetCore.csproj +++ b/src/NLog.Web.AspNetCore/NLog.Web.AspNetCore.csproj @@ -15,9 +15,11 @@ Integrates NLog as provider for Microsoft.Extensions.Logging, and provides NLog ChangeLog: - - AspNetUserClaimLayoutRenderer - Extended with Azure Claims ObjectId + TenantId + AppId (#1069) (@snakefoot) - - Micro optimization by using is null (#1070) (@snakefoot) - - Updated dependency NLog.Extensions.Logging v5.4 (#1072) (@snakefoot)List of major changes in NLog 5.0: https://nlog-project.org/2022/05/16/nlog-5-0-finally-ready.html +- Added UseNLog extension method for IHostApplicationBuilder (#1080) (@snakefoot) +- Added AddNLogWeb extension method for IServiceCollection (#1080) (@snakefoot) +- Updated dependency NLog.Extensions.Logging v5.5 (#1080) (@snakefoot) + +List of major changes in NLog 5.0: https://nlog-project.org/2022/05/16/nlog-5-0-finally-ready.html Full changelog: https://github.com/NLog/NLog.Web/releases @@ -72,7 +74,7 @@ List of available Layout Renderers: https://nlog-project.org/config/?tab=layout- $(Title) - + diff --git a/src/NLog.Web/NLog.Web.csproj b/src/NLog.Web/NLog.Web.csproj index 700a9312..6035e45a 100644 --- a/src/NLog.Web/NLog.Web.csproj +++ b/src/NLog.Web/NLog.Web.csproj @@ -69,7 +69,7 @@ List of available Layout Renderers: https://nlog-project.org/config/?tab=layout- - +