diff --git a/src/SplunkLogger/LoggerFactoryExtensions.cs b/src/SplunkLogger/LoggerFactoryExtensions.cs
index 6631c25..e25caf8 100644
--- a/src/SplunkLogger/LoggerFactoryExtensions.cs
+++ b/src/SplunkLogger/LoggerFactoryExtensions.cs
@@ -2,6 +2,7 @@
using Splunk.Providers;
using Splunk.Configurations;
using System.Collections.Generic;
+using System.Net.Http;
namespace Splunk
{
@@ -18,11 +19,12 @@ public static class LoggerFactoryExtensions
/// Logger factory.
/// Configuration.
/// Custom text formatter.
- public static ILoggerFactory AddHECRawSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter = null)
+ /// The HTTP handler stack to use for sending requests.
+ public static ILoggerFactory AddHECRawSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter = null, HttpMessageHandler httpMessageHandler = null)
{
if (formatter == null)
formatter = DefaultLoggerFormatter;
- loggerFactory.AddProvider(new SplunkHECRawLoggerProvider(configuration, formatter));
+ loggerFactory.AddProvider(new SplunkHECRawLoggerProvider(configuration, formatter, httpMessageHandler));
return loggerFactory;
}
@@ -32,11 +34,12 @@ public static ILoggerFactory AddHECRawSplunkLogger(this ILoggerFactory loggerFac
/// Logger factory.
/// Configuration.
/// Custom text formatter.
- public static ILoggerFactory AddHECJsonSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter = null)
+ /// The HTTP handler stack to use for sending requests.
+ public static ILoggerFactory AddHECJsonSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter = null, HttpMessageHandler httpMessageHandler = null)
{
if (formatter == null)
formatter = DefaultLoggerFormatter;
- loggerFactory.AddProvider(new SplunkHECJsonLoggerProvider(configuration, formatter));
+ loggerFactory.AddProvider(new SplunkHECJsonLoggerProvider(configuration, formatter, httpMessageHandler));
return loggerFactory;
}
diff --git a/src/SplunkLogger/Providers/SplunkHECBaseProvider.cs b/src/SplunkLogger/Providers/SplunkHECBaseProvider.cs
index f44db33..d2e45c1 100644
--- a/src/SplunkLogger/Providers/SplunkHECBaseProvider.cs
+++ b/src/SplunkLogger/Providers/SplunkHECBaseProvider.cs
@@ -18,9 +18,9 @@ public abstract class SplunkHECBaseProvider : ILoggerProvider
protected ILogger loggerInstance;
protected HttpClient httpClient;
- public SplunkHECBaseProvider(SplunkLoggerConfiguration configuration, string endPointCustomization)
+ public SplunkHECBaseProvider(SplunkLoggerConfiguration configuration, string endPointCustomization, HttpMessageHandler httpMessageHandler = null)
{
- SetupHttpClient(configuration, endPointCustomization);
+ SetupHttpClient(configuration, endPointCustomization, httpMessageHandler);
}
///
@@ -41,9 +41,9 @@ public SplunkHECBaseProvider(SplunkLoggerConfiguration configuration, string end
/// that the was occupying.
public abstract void Dispose();
- void SetupHttpClient(SplunkLoggerConfiguration configuration, string endPointCustomization)
+ void SetupHttpClient(SplunkLoggerConfiguration configuration, string endPointCustomization, HttpMessageHandler httpMessageHandler)
{
- httpClient = new HttpClient
+ httpClient = new HttpClient(httpMessageHandler ?? new HttpClientHandler())
{
BaseAddress = GetSplunkCollectorUrl(configuration, endPointCustomization)
};
diff --git a/src/SplunkLogger/Providers/SplunkHECJsonLoggerProvider.cs b/src/SplunkLogger/Providers/SplunkHECJsonLoggerProvider.cs
index e471fa5..61a8693 100644
--- a/src/SplunkLogger/Providers/SplunkHECJsonLoggerProvider.cs
+++ b/src/SplunkLogger/Providers/SplunkHECJsonLoggerProvider.cs
@@ -13,6 +13,7 @@ namespace Splunk.Providers
///
/// This class is used to provide a Splunk HEC Json logger for each categoryName.
///
+ [ProviderAlias("Splunk")]
public class SplunkHECJsonLoggerProvider : SplunkHECBaseProvider, ILoggerProvider
{
readonly BatchManager batchManager;
@@ -24,8 +25,9 @@ public class SplunkHECJsonLoggerProvider : SplunkHECBaseProvider, ILoggerProvide
///
/// Splunk configuration instance for HEC.
/// Formatter instance.
- public SplunkHECJsonLoggerProvider(SplunkLoggerConfiguration configuration, ILoggerFormatter loggerFormatter = null)
- : base(configuration, "event")
+ /// The HTTP handler stack to use for sending requests.
+ public SplunkHECJsonLoggerProvider(SplunkLoggerConfiguration configuration, ILoggerFormatter loggerFormatter = null, HttpMessageHandler httpMessageHandler = null)
+ : base(configuration, "event", httpMessageHandler)
{
this.loggerFormatter = loggerFormatter;
loggers = new ConcurrentDictionary();
diff --git a/src/SplunkLogger/Providers/SplunkHECRawLoggerProvider.cs b/src/SplunkLogger/Providers/SplunkHECRawLoggerProvider.cs
index a465c40..f972415 100644
--- a/src/SplunkLogger/Providers/SplunkHECRawLoggerProvider.cs
+++ b/src/SplunkLogger/Providers/SplunkHECRawLoggerProvider.cs
@@ -12,6 +12,7 @@ namespace Splunk.Providers
///
/// This class is used to provide a Splunk HEC Raw logger for each categoryName.
///
+ [ProviderAlias("Splunk")]
public class SplunkHECRawLoggerProvider : SplunkHECBaseProvider, ILoggerProvider
{
readonly BatchManager batchManager;
@@ -23,8 +24,9 @@ public class SplunkHECRawLoggerProvider : SplunkHECBaseProvider, ILoggerProvider
///
/// Splunk configuration instance for HEC.
/// Formatter instance.
- public SplunkHECRawLoggerProvider(SplunkLoggerConfiguration configuration, ILoggerFormatter loggerFormatter = null)
- :base(configuration, "raw")
+ /// The HTTP handler stack to use for sending requests.
+ public SplunkHECRawLoggerProvider(SplunkLoggerConfiguration configuration, ILoggerFormatter loggerFormatter = null, HttpMessageHandler httpMessageHandler = null)
+ :base(configuration, "raw", httpMessageHandler)
{
this.loggerFormatter = loggerFormatter;
loggers = new ConcurrentDictionary();
diff --git a/src/SplunkLogger/Providers/SplunkTcpLoggerProvider.cs b/src/SplunkLogger/Providers/SplunkTcpLoggerProvider.cs
index d49a94e..33f64ce 100644
--- a/src/SplunkLogger/Providers/SplunkTcpLoggerProvider.cs
+++ b/src/SplunkLogger/Providers/SplunkTcpLoggerProvider.cs
@@ -9,6 +9,7 @@ namespace Splunk.Providers
///
/// This class is used to provide a Splunk Socket Tcp logger for each categoryName.
///
+ [ProviderAlias("Splunk")]
public class SplunkTcpLoggerProvider : ILoggerProvider
{
readonly ILoggerFormatter loggerFormatter;
diff --git a/src/SplunkLogger/Providers/SplunkUdpLoggerProvider.cs b/src/SplunkLogger/Providers/SplunkUdpLoggerProvider.cs
index f11702d..81cce19 100644
--- a/src/SplunkLogger/Providers/SplunkUdpLoggerProvider.cs
+++ b/src/SplunkLogger/Providers/SplunkUdpLoggerProvider.cs
@@ -9,6 +9,7 @@ namespace Splunk.Providers
///
/// This class is used to provide a Splunk Socket Udp logger for each categoryName.
///
+ [ProviderAlias("Splunk")]
public class SplunkUdpLoggerProvider : ILoggerProvider
{
readonly ILoggerFormatter loggerFormatter;