1818using System . IO ;
1919using System . Linq ;
2020using System . Net ;
21- using System . Net . Http ;
2221using System . Threading ;
2322using System . Threading . Tasks ;
2423using Serilog . Core ;
@@ -33,20 +32,11 @@ namespace Serilog.Sinks.Splunk
3332 public class EventCollectorSink : ILogEventSink , IDisposable
3433 {
3534 private readonly string _splunkHost ;
36- private readonly string _eventCollectorToken ;
37- private readonly string _source ;
38- private readonly string _sourceType ;
39- private readonly string _host ;
40- private readonly string _index ;
4135 private readonly string _uriPath ;
4236 private readonly int _batchSizeLimitLimit ;
4337 private readonly SplunkJsonFormatter _jsonFormatter ;
4438 private readonly ConcurrentQueue < LogEvent > _queue ;
4539 private readonly EventCollectorClient _httpClient ;
46- private const string DefaultSource = "" ;
47- private const string DefaultSourceType = "" ;
48- private const string DefaultHost = "" ;
49- private const string DefaultIndex = "" ;
5040
5141 /// <summary>
5242 /// Taken from Splunk.Logging.Common
@@ -56,7 +46,7 @@ public class EventCollectorSink : ILogEventSink, IDisposable
5646 HttpStatusCode . Forbidden ,
5747 HttpStatusCode . MethodNotAllowed ,
5848 HttpStatusCode . BadRequest
59- } ;
49+ } ;
6050
6151 /// <summary>
6252 /// Creates a new instance of the sink
@@ -73,24 +63,16 @@ public EventCollectorSink(
7363 int batchIntervalInSeconds = 5 ,
7464 int batchSizeLimit = 100 ,
7565 IFormatProvider formatProvider = null ,
76- bool renderTemplate = true
77- )
66+ bool renderTemplate = true )
67+ : this (
68+ splunkHost ,
69+ eventCollectorToken ,
70+ null , null , null , null , null ,
71+ batchIntervalInSeconds ,
72+ batchSizeLimit ,
73+ formatProvider ,
74+ renderTemplate )
7875 {
79- _splunkHost = splunkHost ;
80- _eventCollectorToken = eventCollectorToken ;
81- _queue = new ConcurrentQueue < LogEvent > ( ) ;
82- _jsonFormatter = new SplunkJsonFormatter ( renderMessage : true , formatProvider : formatProvider , renderTemplate : renderTemplate ) ;
83- _batchSizeLimitLimit = batchSizeLimit ;
84-
85- var batchInterval = TimeSpan . FromSeconds ( batchIntervalInSeconds ) ;
86- _httpClient = new EventCollectorClient ( _eventCollectorToken ) ;
87-
88- var cancellationToken = new CancellationToken ( ) ;
89-
90- RepeatAction . OnInterval (
91- batchInterval ,
92- async ( ) => await ProcessQueue ( ) ,
93- cancellationToken ) ;
9476 }
9577
9678 /// <summary>
@@ -118,19 +100,23 @@ public EventCollectorSink(
118100 int batchIntervalInSeconds ,
119101 int batchSizeLimit ,
120102 IFormatProvider formatProvider = null ,
121- bool renderTemplate = true
122- ) : this ( splunkHost ,
123- eventCollectorToken ,
124- batchIntervalInSeconds ,
125- batchSizeLimit ,
126- formatProvider ,
127- renderTemplate )
103+ bool renderTemplate = true )
128104 {
129- _source = source ;
130- _sourceType = sourceType ;
131- _host = host ;
132- _index = index ;
133105 _uriPath = uriPath ;
106+ _splunkHost = splunkHost ;
107+ _queue = new ConcurrentQueue < LogEvent > ( ) ;
108+ _jsonFormatter = new SplunkJsonFormatter ( renderTemplate , formatProvider , source , sourceType , host , index ) ;
109+ _batchSizeLimitLimit = batchSizeLimit ;
110+
111+ var batchInterval = TimeSpan . FromSeconds ( batchIntervalInSeconds ) ;
112+ _httpClient = new EventCollectorClient ( eventCollectorToken ) ;
113+
114+ var cancellationToken = new CancellationToken ( ) ;
115+
116+ RepeatAction . OnInterval (
117+ batchInterval ,
118+ async ( ) => await ProcessQueue ( ) ,
119+ cancellationToken ) ;
134120 }
135121
136122 /// <summary>
@@ -175,21 +161,14 @@ private async Task ProcessQueue()
175161
176162 private async Task Send ( IEnumerable < LogEvent > events )
177163 {
178- string allEvents = string . Empty ;
164+ var allEvents = new StringWriter ( ) ;
179165
180166 foreach ( var logEvent in events )
181167 {
182- var sw = new StringWriter ( ) ;
183- _jsonFormatter . Format ( logEvent , sw ) ;
184-
185- var serialisedEvent = sw . ToString ( ) ;
186-
187- var splunkEvent = new SplunkEvent ( serialisedEvent , _source , _sourceType , _host , _index , logEvent . Timestamp . ToEpoch ( ) ) ;
188-
189- allEvents = $ "{ allEvents } { splunkEvent . Payload } ";
168+ _jsonFormatter . Format ( logEvent , allEvents ) ;
190169 }
191170
192- var request = new EventCollectorRequest ( _splunkHost , allEvents , _uriPath ) ;
171+ var request = new EventCollectorRequest ( _splunkHost , allEvents . ToString ( ) , _uriPath ) ;
193172 var response = await _httpClient . SendAsync ( request ) ;
194173
195174 if ( response . IsSuccessStatusCode )
0 commit comments