Skip to content

Commit 0466a9c

Browse files
AddNLog overload with NLogProviderOptions and LoggingConfiguration (#393)
* added overload to provide both provider options and logging configuration * adding test * changing parameter order
1 parent d78f80d commit 0466a9c

2 files changed

Lines changed: 34 additions & 1 deletion

File tree

src/NLog.Extensions.Logging/Extensions/ConfigureExtensions.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,19 @@ public static ILoggingBuilder AddNLog(this ILoggingBuilder factory, NLogProvider
104104
/// <returns>ILoggingBuilder for chaining</returns>
105105
public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, LoggingConfiguration configuration)
106106
{
107-
AddNLogLoggerProvider(builder.Services, null, null, (serviceProvider, config, options) =>
107+
return AddNLog(builder, configuration, null);
108+
}
109+
110+
/// <summary>
111+
/// Enable NLog as logging provider for Microsoft Extension Logging
112+
/// </summary>
113+
/// <param name="builder"></param>
114+
/// <param name="configuration">New NLog config.</param>
115+
/// <param name="options">NLog options</param>
116+
/// <returns>ILoggingBuilder for chaining</returns>
117+
public static ILoggingBuilder AddNLog(this ILoggingBuilder builder, LoggingConfiguration configuration, NLogProviderOptions options)
118+
{
119+
AddNLogLoggerProvider(builder.Services, null, options, (serviceProvider, config, options) =>
108120
{
109121
var provider = CreateNLogLoggerProvider(serviceProvider, config, options);
110122
// Delay initialization of targets until we have loaded config-settings

test/NLog.Extensions.Logging.Tests/Extensions/ConfigureExtensionsTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,27 @@ public void AddNLog_LoggingBuilder_LogInfo_ShouldLogToNLog()
6969
AssertSingleMessage(memoryTarget, "Info|test message with 1 arg");
7070
}
7171

72+
[Theory]
73+
[InlineData("EventId", "eventId2")]
74+
[InlineData("EventId_Name", "eventId2")]
75+
[InlineData("EventId_Id", "2")]
76+
public void AddNLog_LoggingBuilder_LogInfoWithEventId_ShouldLogToNLogWithEventId(string eventPropery, string expectedEventInLog)
77+
{
78+
// Arrange
79+
ILoggingBuilder builder = new LoggingBuilderStub();
80+
var config = CreateConfigWithMemoryTarget(out var memoryTarget, $"${{event-properties:{eventPropery}}} - ${{message}}");
81+
var options = new NLogProviderOptions { EventIdSeparator = "_" };
82+
83+
// Act
84+
builder.AddNLog(config, options);
85+
var provider = GetLoggerProvider(builder);
86+
var logger = provider.CreateLogger("logger1");
87+
logger.LogInformation(new EventId(2, "eventId2"), "test message with {0} arg", 1);
88+
89+
// Assert
90+
AssertSingleMessage(memoryTarget, $"{expectedEventInLog} - test message with 1 arg");
91+
}
92+
7293
[Fact]
7394
public void AddNLog_LogFactoryBuilder_LogInfo_ShouldLogToNLog()
7495
{

0 commit comments

Comments
 (0)