Skip to content

Commit 23e5c24

Browse files
Coleman, ChristopherColeman, Christopher
authored andcommitted
Add options validation and better messages when mis-configured.
1 parent da0a37e commit 23e5c24

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

src/ColeSoft.Extensions.Logging.Splunk/ColeSoft.Extensions.Logging.Splunk.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
</PackageReference>
2424
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" />
2525
<PackageReference Include="Microsoft.Extensions.Http" Version="2.2.0" />
26-
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="2.2.0" />
26+
<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="2.2.0" />
27+
<PackageReference Include="Microsoft.Extensions.Options.DataAnnotations" Version="2.2.0" />
2728
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
2829
<PackageReference Include="SonarAnalyzer.CSharp" Version="7.11.0.8083">
2930
<PrivateAssets>all</PrivateAssets>

src/ColeSoft.Extensions.Logging.Splunk/SplunkLoggerFactoryExtensions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ private static ILoggingBuilder AddSplunkJson(this ILoggingBuilder builder, Func<
150150
: new SplunkJsonPayloadTransformer(payloadCreator));
151151

152152
builder.Services.AddSingleton<ILoggerProvider, SplunkJsonLoggerProvider>();
153-
builder.Services.AddSingleton<IConfigureOptions<SplunkLoggerOptions>, LoggerProviderConfigureOptions<SplunkLoggerOptions, SplunkJsonLoggerProvider>>();
153+
builder.Services.AddOptions<SplunkLoggerOptions>().ValidateDataAnnotations();
154+
builder.Services.AddSingleton<IConfigureOptions<SplunkLoggerOptions>, LoggerProviderConfigureOptions<SplunkLoggerOptions, SplunkJsonLoggerProvider>>();
154155
builder.Services.AddSingleton<IOptionsChangeTokenSource<SplunkLoggerOptions>, LoggerProviderOptionsChangeTokenSource<SplunkLoggerOptions, SplunkJsonLoggerProvider>>();
155156

156157
return builder;
@@ -180,6 +181,7 @@ private static ILoggingBuilder AddSplunkRaw(this ILoggingBuilder builder, Func<L
180181
: new SplunkRawPayloadTransformer(payloadCreator));
181182

182183
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<ILoggerProvider, SplunkRawLoggerProvider>());
184+
builder.Services.AddOptions<SplunkLoggerOptions>().ValidateDataAnnotations();
183185
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IConfigureOptions<SplunkLoggerOptions>, LoggerProviderConfigureOptions<SplunkLoggerOptions, SplunkRawLoggerProvider>>());
184186
builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton<IOptionsChangeTokenSource<SplunkLoggerOptions>, LoggerProviderOptionsChangeTokenSource<SplunkLoggerOptions, SplunkRawLoggerProvider>>());
185187

src/ColeSoft.Extensions.Logging.Splunk/SplunkLoggerOptions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using System.ComponentModel.DataAnnotations;
23

34
namespace ColeSoft.Extensions.Logging.Splunk
45
{
@@ -53,12 +54,14 @@ public enum ChannelIdOption
5354
/// <remarks>This must be specified.</remarks>
5455
/// <example>https://http-inputs-&lt;customer&gt;.splunkcloud.com/services/collector.</example>
5556
/// <example>https://my-server:8088/services/collector.</example>
57+
[Required]
5658
public string SplunkCollectorUrl { get; set; }
5759

5860
/// <summary>
5961
/// Gets or sets the HEC authentication token.
6062
/// </summary>
6163
/// <remarks>This must be specified. See <see href="http://dev.splunk.com/view/event-collector/SP-CAAAE6P#auth"/> for more information.</remarks>
64+
[Required]
6265
public string AuthenticationToken { get; set; }
6366

6467
/// <summary>

0 commit comments

Comments
 (0)