Skip to content

Commit e87fbd1

Browse files
authored
Add Overloads for Add(Json/Systemd/Simple)Console (#39725)
1 parent 69ef55e commit e87fbd1

File tree

3 files changed

+93
-4
lines changed

3 files changed

+93
-4
lines changed

src/libraries/Microsoft.Extensions.Logging.Console/ref/Microsoft.Extensions.Logging.Console.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@ public static partial class ConsoleLoggerExtensions
1212
public static Microsoft.Extensions.Logging.ILoggingBuilder AddConsole(this Microsoft.Extensions.Logging.ILoggingBuilder builder, System.Action<Microsoft.Extensions.Logging.Console.ConsoleLoggerOptions> configure) { throw null; }
1313
public static Microsoft.Extensions.Logging.ILoggingBuilder AddConsoleFormatter<TFormatter, TOptions>(this Microsoft.Extensions.Logging.ILoggingBuilder builder) where TFormatter : Microsoft.Extensions.Logging.Console.ConsoleFormatter where TOptions : Microsoft.Extensions.Logging.Console.ConsoleFormatterOptions { throw null; }
1414
public static Microsoft.Extensions.Logging.ILoggingBuilder AddConsoleFormatter<TFormatter, TOptions>(this Microsoft.Extensions.Logging.ILoggingBuilder builder, System.Action<TOptions> configure) where TFormatter : Microsoft.Extensions.Logging.Console.ConsoleFormatter where TOptions : Microsoft.Extensions.Logging.Console.ConsoleFormatterOptions { throw null; }
15+
public static Microsoft.Extensions.Logging.ILoggingBuilder AddJsonConsole(this Microsoft.Extensions.Logging.ILoggingBuilder builder) { throw null; }
1516
public static Microsoft.Extensions.Logging.ILoggingBuilder AddJsonConsole(this Microsoft.Extensions.Logging.ILoggingBuilder builder, System.Action<Microsoft.Extensions.Logging.Console.JsonConsoleFormatterOptions> configure) { throw null; }
17+
public static Microsoft.Extensions.Logging.ILoggingBuilder AddSimpleConsole(this Microsoft.Extensions.Logging.ILoggingBuilder builder) { throw null; }
1618
public static Microsoft.Extensions.Logging.ILoggingBuilder AddSimpleConsole(this Microsoft.Extensions.Logging.ILoggingBuilder builder, System.Action<Microsoft.Extensions.Logging.Console.SimpleConsoleFormatterOptions> configure) { throw null; }
19+
public static Microsoft.Extensions.Logging.ILoggingBuilder AddSystemdConsole(this Microsoft.Extensions.Logging.ILoggingBuilder builder) { throw null; }
1720
public static Microsoft.Extensions.Logging.ILoggingBuilder AddSystemdConsole(this Microsoft.Extensions.Logging.ILoggingBuilder builder, System.Action<Microsoft.Extensions.Logging.Console.ConsoleFormatterOptions> configure) { throw null; }
1821
}
1922
}
Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ public static ILoggingBuilder AddConsole(this ILoggingBuilder builder, Action<Co
4949
return builder;
5050
}
5151

52+
/// <summary>
53+
/// Add the default console log formatter named 'simple' to the factory with default properties.
54+
/// </summary>
55+
/// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
56+
public static ILoggingBuilder AddSimpleConsole(this ILoggingBuilder builder) =>
57+
builder.AddFormatterWithName(ConsoleFormatterNames.Simple);
58+
5259
/// <summary>
5360
/// Add and configure a console log formatter named 'simple' to the factory.
5461
/// </summary>
@@ -59,6 +66,13 @@ public static ILoggingBuilder AddSimpleConsole(this ILoggingBuilder builder, Act
5966
return builder.AddConsoleWithFormatter<SimpleConsoleFormatterOptions>(ConsoleFormatterNames.Simple, configure);
6067
}
6168

69+
/// <summary>
70+
/// Add a console log formatter named 'json' to the factory with default properties.
71+
/// </summary>
72+
/// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
73+
public static ILoggingBuilder AddJsonConsole(this ILoggingBuilder builder) =>
74+
builder.AddFormatterWithName(ConsoleFormatterNames.Json);
75+
6276
/// <summary>
6377
/// Add and configure a console log formatter named 'json' to the factory.
6478
/// </summary>
@@ -79,19 +93,29 @@ public static ILoggingBuilder AddSystemdConsole(this ILoggingBuilder builder, Ac
7993
return builder.AddConsoleWithFormatter<ConsoleFormatterOptions>(ConsoleFormatterNames.Systemd, configure);
8094
}
8195

96+
/// <summary>
97+
/// Add a console log formatter named 'systemd' to the factory with default properties.
98+
/// </summary>
99+
/// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
100+
public static ILoggingBuilder AddSystemdConsole(this ILoggingBuilder builder) =>
101+
builder.AddFormatterWithName(ConsoleFormatterNames.Systemd);
102+
82103
internal static ILoggingBuilder AddConsoleWithFormatter<TOptions>(this ILoggingBuilder builder, string name, Action<TOptions> configure)
83104
where TOptions : ConsoleFormatterOptions
84105
{
85106
if (configure == null)
86107
{
87108
throw new ArgumentNullException(nameof(configure));
88109
}
89-
builder.AddConsole((ConsoleLoggerOptions options) => options.FormatterName = name);
110+
builder.AddFormatterWithName(name);
90111
builder.Services.Configure(configure);
91112

92113
return builder;
93114
}
94115

116+
private static ILoggingBuilder AddFormatterWithName(this ILoggingBuilder builder, string name) =>
117+
builder.AddConsole((ConsoleLoggerOptions options) => options.FormatterName = name);
118+
95119
/// <summary>
96120
/// Adds a custom console logger formatter 'TFormatter' to be configured with options 'TOptions'.
97121
/// </summary>

src/libraries/Microsoft.Extensions.Logging.Console/tests/ConsoleLoggerExtensionsTests.cs

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ public void AddSimpleConsole_ChangeProperties_IsReadFromLoggingConfiguration()
170170
var loggerProvider = new ServiceCollection()
171171
.AddLogging(builder => builder
172172
.AddConfiguration(configuration)
173-
.AddSimpleConsole(o => {})
173+
.AddSimpleConsole()
174174
)
175175
.BuildServiceProvider()
176176
.GetRequiredService<ILoggerProvider>();
@@ -186,6 +186,37 @@ public void AddSimpleConsole_ChangeProperties_IsReadFromLoggingConfiguration()
186186
Assert.True(formatter.FormatterOptions.IncludeScopes);
187187
}
188188

189+
[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsThreadingSupported))]
190+
[ActiveIssue("https://github.com/dotnet/runtime/issues/38337", TestPlatforms.Browser)]
191+
public void AddSimpleConsole_OutsideConfig_TakesProperty()
192+
{
193+
var configuration = new ConfigurationBuilder().AddInMemoryCollection(new[] {
194+
new KeyValuePair<string, string>("Console:FormatterOptions:TimestampFormat", "HH:mm "),
195+
new KeyValuePair<string, string>("Console:FormatterOptions:UseUtcTimestamp", "true"),
196+
new KeyValuePair<string, string>("Console:FormatterOptions:IncludeScopes", "false"),
197+
}).Build();
198+
199+
var loggerProvider = new ServiceCollection()
200+
.AddLogging(builder => builder
201+
.AddConfiguration(configuration)
202+
.AddSimpleConsole(o => {
203+
o.TimestampFormat = "HH:mm:ss ";
204+
o.IncludeScopes = false;
205+
o.UseUtcTimestamp = true;
206+
})
207+
)
208+
.BuildServiceProvider()
209+
.GetRequiredService<ILoggerProvider>();
210+
211+
var consoleLoggerProvider = Assert.IsType<ConsoleLoggerProvider>(loggerProvider);
212+
var logger = (ConsoleLogger)consoleLoggerProvider.CreateLogger("Category");
213+
Assert.Equal(ConsoleFormatterNames.Simple, logger.Options.FormatterName);
214+
var formatter = Assert.IsType<SimpleConsoleFormatter>(logger.Formatter);
215+
Assert.Equal("HH:mm:ss ", formatter.FormatterOptions.TimestampFormat);
216+
Assert.False(formatter.FormatterOptions.IncludeScopes);
217+
Assert.True(formatter.FormatterOptions.UseUtcTimestamp);
218+
}
219+
189220
[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsThreadingSupported))]
190221
[ActiveIssue("https://github.com/dotnet/runtime/issues/38337", TestPlatforms.Browser)]
191222
public void AddSystemdConsole_ChangeProperties_IsReadFromLoggingConfiguration()
@@ -199,7 +230,7 @@ public void AddSystemdConsole_ChangeProperties_IsReadFromLoggingConfiguration()
199230
var loggerProvider = new ServiceCollection()
200231
.AddLogging(builder => builder
201232
.AddConfiguration(configuration)
202-
.AddSystemdConsole(o => {})
233+
.AddSystemdConsole()
203234
)
204235
.BuildServiceProvider()
205236
.GetRequiredService<ILoggerProvider>();
@@ -213,6 +244,37 @@ public void AddSystemdConsole_ChangeProperties_IsReadFromLoggingConfiguration()
213244
Assert.True(formatter.FormatterOptions.IncludeScopes);
214245
}
215246

247+
[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsThreadingSupported))]
248+
[ActiveIssue("https://github.com/dotnet/runtime/issues/38337", TestPlatforms.Browser)]
249+
public void AddSystemdConsole_OutsideConfig_TakesProperty()
250+
{
251+
var configuration = new ConfigurationBuilder().AddInMemoryCollection(new[] {
252+
new KeyValuePair<string, string>("Console:FormatterOptions:TimestampFormat", "HH:mm "),
253+
new KeyValuePair<string, string>("Console:FormatterOptions:UseUtcTimestamp", "true"),
254+
new KeyValuePair<string, string>("Console:FormatterOptions:IncludeScopes", "true"),
255+
}).Build();
256+
257+
var loggerProvider = new ServiceCollection()
258+
.AddLogging(builder => builder
259+
.AddConfiguration(configuration)
260+
.AddSystemdConsole(o => {
261+
o.TimestampFormat = "HH:mm:ss ";
262+
o.IncludeScopes = false;
263+
o.UseUtcTimestamp = false;
264+
})
265+
)
266+
.BuildServiceProvider()
267+
.GetRequiredService<ILoggerProvider>();
268+
269+
var consoleLoggerProvider = Assert.IsType<ConsoleLoggerProvider>(loggerProvider);
270+
var logger = (ConsoleLogger)consoleLoggerProvider.CreateLogger("Category");
271+
Assert.Equal(ConsoleFormatterNames.Systemd, logger.Options.FormatterName);
272+
var formatter = Assert.IsType<SystemdConsoleFormatter>(logger.Formatter);
273+
Assert.Equal("HH:mm:ss ", formatter.FormatterOptions.TimestampFormat);
274+
Assert.False(formatter.FormatterOptions.UseUtcTimestamp);
275+
Assert.False(formatter.FormatterOptions.IncludeScopes);
276+
}
277+
216278
[ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsThreadingSupported))]
217279
[ActiveIssue("https://github.com/dotnet/runtime/issues/38337", TestPlatforms.Browser)]
218280
public void AddJsonConsole_ChangeProperties_IsReadFromLoggingConfiguration()
@@ -227,7 +289,7 @@ public void AddJsonConsole_ChangeProperties_IsReadFromLoggingConfiguration()
227289
var loggerProvider = new ServiceCollection()
228290
.AddLogging(builder => builder
229291
.AddConfiguration(configuration)
230-
.AddJsonConsole(o => {})
292+
.AddJsonConsole()
231293
)
232294
.BuildServiceProvider()
233295
.GetRequiredService<ILoggerProvider>();

0 commit comments

Comments
 (0)