Skip to content

Commit 190fd82

Browse files
author
Prasad Muley
committed
Log response from Splunk by reading it’s the HttpStatus code as task.IsCompletedSuccessfully doesn’t always translate to success.
1 parent fabfa40 commit 190fd82

File tree

2 files changed

+72
-4
lines changed

2 files changed

+72
-4
lines changed

src/SplunkLogger/Providers/SplunkHECJsonLoggerProvider.cs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public SplunkHECJsonLoggerProvider(SplunkLoggerConfiguration configuration, ILog
3838

3939
SetupHttpClient(configuration, "event");
4040

41-
batchController = new BatchManager(configuration.HecConfiguration.BatchSizeCount, configuration.HecConfiguration.BatchIntervalInMiliseconds, Emit);
41+
batchController = new BatchManager(configuration.HecConfiguration.BatchSizeCount, configuration.HecConfiguration.BatchIntervalInMilliseconds, Emit);
4242
}
4343

4444
/// <summary>
@@ -87,7 +87,41 @@ public void Emit(List<object> events)
8787
httpClient.PostAsync(string.Empty, stringContent)
8888
.ContinueWith(task => {
8989
if (task.IsCompletedSuccessfully)
90-
Debug.WriteLine("Splunk HEC RAW Status: Sucess");
90+
switch (task.Result.StatusCode)
91+
{
92+
case System.Net.HttpStatusCode.OK:
93+
Debug.WriteLine("Splunk HEC JSON Status: Request completed successfully.");
94+
break;
95+
case System.Net.HttpStatusCode.Created:
96+
Debug.WriteLine("Splunk HEC JSON Status: Create request completed successfully.");
97+
break;
98+
case System.Net.HttpStatusCode.BadRequest:
99+
Debug.WriteLine("Splunk HEC JSON Status: Request error. See response body for details.");
100+
break;
101+
case System.Net.HttpStatusCode.Unauthorized:
102+
Debug.WriteLine("Splunk HEC JSON Status: Authentication failure, invalid access credentials.");
103+
break;
104+
case System.Net.HttpStatusCode.PaymentRequired:
105+
Debug.WriteLine("Splunk HEC JSON Status: In-use Splunk Enterprise license disables this feature.");
106+
break;
107+
case System.Net.HttpStatusCode.Forbidden:
108+
Debug.WriteLine("Splunk HEC JSON Status: Insufficient permission.");
109+
break;
110+
case System.Net.HttpStatusCode.NotFound:
111+
Debug.WriteLine("Splunk HEC JSON Status: Requested endpoint does not exist.");
112+
break;
113+
case System.Net.HttpStatusCode.Conflict:
114+
Debug.WriteLine("Splunk HEC JSON Status: Invalid operation for this endpoint. See response body for details.");
115+
break;
116+
case System.Net.HttpStatusCode.InternalServerError:
117+
Debug.WriteLine("Splunk HEC JSON Status: Unspecified internal server error. See response body for details.");
118+
break;
119+
case System.Net.HttpStatusCode.ServiceUnavailable:
120+
Debug.WriteLine("Splunk HEC JSON Status: Feature is disabled in configuration file.");
121+
break;
122+
default:
123+
break;
124+
}
91125
else if (task.IsCanceled)
92126
Debug.WriteLine("Splunk HEC RAW Status: Canceled");
93127
else

src/SplunkLogger/Providers/SplunkHECRawLoggerProvider.cs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public SplunkHECRawLoggerProvider(SplunkLoggerConfiguration configuration, ILogg
3535

3636
SetupHttpClient(configuration, "raw");
3737

38-
batchManager = new BatchManager(configuration.HecConfiguration.BatchSizeCount, configuration.HecConfiguration.BatchIntervalInMiliseconds, Emit);
38+
batchManager = new BatchManager(configuration.HecConfiguration.BatchSizeCount, configuration.HecConfiguration.BatchIntervalInMilliseconds, Emit);
3939
}
4040

4141
/// <summary>
@@ -83,7 +83,41 @@ public void Emit(List<object> events)
8383
httpClient.PostAsync(string.Empty, stringContent)
8484
.ContinueWith(task => {
8585
if (task.IsCompletedSuccessfully)
86-
Debug.WriteLine("Splunk HEC RAW Status: Sucess");
86+
switch (task.Result.StatusCode)
87+
{
88+
case System.Net.HttpStatusCode.OK:
89+
Debug.WriteLine("Splunk HEC RAW Status: Request completed successfully.");
90+
break;
91+
case System.Net.HttpStatusCode.Created:
92+
Debug.WriteLine("Splunk HEC RAW Status: Create request completed successfully.");
93+
break;
94+
case System.Net.HttpStatusCode.BadRequest:
95+
Debug.WriteLine("Splunk HEC RAW Status: Request error. See response body for details.");
96+
break;
97+
case System.Net.HttpStatusCode.Unauthorized:
98+
Debug.WriteLine("Splunk HEC RAW Status: Authentication failure, invalid access credentials.");
99+
break;
100+
case System.Net.HttpStatusCode.PaymentRequired:
101+
Debug.WriteLine("Splunk HEC RAW Status: In-use Splunk Enterprise license disables this feature.");
102+
break;
103+
case System.Net.HttpStatusCode.Forbidden:
104+
Debug.WriteLine("Splunk HEC RAW Status: Insufficient permission.");
105+
break;
106+
case System.Net.HttpStatusCode.NotFound:
107+
Debug.WriteLine("Splunk HEC RAW Status: Requested endpoint does not exist.");
108+
break;
109+
case System.Net.HttpStatusCode.Conflict:
110+
Debug.WriteLine("Splunk HEC RAW Status: Invalid operation for this endpoint. See response body for details.");
111+
break;
112+
case System.Net.HttpStatusCode.InternalServerError:
113+
Debug.WriteLine("Splunk HEC RAW Status: Unspecified internal server error. See response body for details.");
114+
break;
115+
case System.Net.HttpStatusCode.ServiceUnavailable:
116+
Debug.WriteLine("Splunk HEC RAW Status: Feature is disabled in configuration file.");
117+
break;
118+
default:
119+
break;
120+
}
87121
else if (task.IsCanceled)
88122
Debug.WriteLine("Splunk HEC RAW Status: Canceled");
89123
else

0 commit comments

Comments
 (0)