Skip to content

Commit a11dc39

Browse files
authored
Merge pull request #39 from vtex/feature/cleanup_and_configuration
Cleanup and configuration
2 parents 5fefa3f + 346aac9 commit a11dc39

20 files changed

+102
-914
lines changed

src/SampleWebAPI/Controllers/ValuesController.cs

+8-7
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@ public ValuesController(ILoggerFactory loggerFactory)
1919
[HttpGet]
2020
public IEnumerable<string> Get()
2121
{
22-
logger.DefineVTEXLog(LogLevel.Critical,
23-
"Values Controller",
24-
"api/values",
25-
string.Empty,
26-
new NotImplementedException(),
27-
new Tuple<string, string>("method", "GET"));
28-
return new string[] { "value1", "value2" };
22+
var exception = new NotImplementedException();
23+
logger.Log(LogLevel.Critical, new EventId(-1, "Values Controller"), new { route = "Get" }, exception,
24+
(argState, argException) => {
25+
return string.Format("{0} {1}",
26+
argState != null ? argState.ToString() : string.Empty,
27+
argException != null ? argException.ToString() : string.Empty);
28+
});
29+
return new string[] { "4", "2" };
2930
}
3031
}
3132
}

src/SampleWebAPI/SampleWebAPI.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,5 @@
2121

2222
<ItemGroup>
2323
<ProjectReference Include="..\SplunkLogger\SplunkLogger.csproj" />
24-
<ProjectReference Include="..\VTEXSplunkLogger\VTEXSplunkLogger.csproj" />
2524
</ItemGroup>
2625
</Project>

src/SampleWebAPI/Startup.cs

+47-32
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@
33
using Microsoft.Extensions.Configuration;
44
using Microsoft.Extensions.DependencyInjection;
55
using Microsoft.Extensions.Logging;
6+
using Microsoft.Extensions.Options;
67
using Splunk;
78
using Splunk.Configurations;
8-
using Vtex.SplunkLogger;
99

1010
namespace Vtex.SampleWebAPI
1111
{
1212
public class Startup
1313
{
14-
static readonly ILoggerFormatter formatter = new VTEXSplunkLoggerFormatter();
15-
1614
public IConfiguration Configuration { get; }
1715

1816
public Startup(IConfiguration configuration)
@@ -25,6 +23,7 @@ public Startup(IConfiguration configuration)
2523
/// </summary>
2624
public void ConfigureServices(IServiceCollection services)
2725
{
26+
services.Configure<SplunkLoggerConfiguration>(Configuration.GetSection("Splunk"));
2827
services.AddMvc();
2928
}
3029

@@ -37,41 +36,57 @@ public void ConfigureServices(IServiceCollection services)
3736
/// <param name="loggerFactory">Logger factory.</param>
3837
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
3938
{
40-
ILoggerExtensions.SetApplication("SplunkLoggerSampleWebAPI");
41-
42-
loggerFactory.AddDebug();
39+
//loggerFactory.AddDebug();
4340

44-
var splunkConfiguration = new SplunkLoggerConfiguration()
45-
{
46-
HecConfiguration = new HECConfiguration()
47-
{
48-
SplunkCollectorUrl = "https://localhost:8088/services/collector",
49-
Token = "753c5a9c-fb59-4da0-9064-947f99dc20ba"
50-
},
51-
SocketConfiguration = new SocketConfiguration()
52-
{
53-
HostName = "localhost",
54-
Port = 8111
55-
}
56-
};
41+
var splunkLoggerConfigurationOption = app.ApplicationServices.GetService<IOptions<SplunkLoggerConfiguration>>();
5742

58-
/**************************** Define Your Logger ****************************/
59-
/* */
60-
//loggerFactory.AddHECRawSplunkLogger(splunkConfiguration, null); //
61-
loggerFactory.AddHECRawSplunkLogger(splunkConfiguration, formatter); //
43+
/******************************** Define Your Logger *********************************/
44+
/* */
45+
loggerFactory.AddHECRawSplunkLogger(splunkLoggerConfigurationOption.Value); //
46+
// //
47+
// //
48+
//loggerFactory.AddHECJsonSplunkLogger(splunkConfiguration); //
49+
// //
50+
//loggerFactory.AddTcpSplunkLogger(splunkConfiguration); //
51+
// //
52+
//loggerFactory.AddUdpSplunkLogger(splunkConfiguration); //
53+
/* */
54+
/******************************** Define Your Logger *********************************/
6255

63-
//loggerFactory.AddHECJsonSplunkLogger(splunkConfiguration, null); //
64-
//loggerFactory.AddHECJsonSplunkLogger(splunkConfiguration, formatter); //
56+
app.UseMvc();
57+
}
6558

66-
//loggerFactory.AddTcpSplunkLogger(splunkConfiguration, null); //
67-
//loggerFactory.AddTcpSplunkLogger(splunkConfiguration, formatter); //
59+
/// <summary>
60+
/// Demonstrate how can you provide configuration to your splunk logger addapter(s)
61+
/// </summary>
62+
SplunkLoggerConfiguration GetSplunkLoggerConfiguration(IApplicationBuilder app)
63+
{
64+
SplunkLoggerConfiguration result = null;
6865

69-
//loggerFactory.AddUdpSplunkLogger(splunkConfiguration, null);
70-
//loggerFactory.AddUdpSplunkLogger(splunkConfiguration, formatter);
71-
/* */
72-
/**************************** Define Your Logger ****************************/
66+
//Retrieving Splunk configuration from appsettings json configuration file
67+
var splunkLoggerConfigurationOption = app.ApplicationServices.GetService<IOptions<SplunkLoggerConfiguration>>();
68+
if(splunkLoggerConfigurationOption != null && splunkLoggerConfigurationOption.Value != null)
69+
result = app.ApplicationServices.GetService<IOptions<SplunkLoggerConfiguration>>().Value;
7370

74-
app.UseMvc();
71+
//You can also provide a hard code configuration
72+
//result = new SplunkLoggerConfiguration()
73+
//{
74+
// HecConfiguration = new HECConfiguration()
75+
// {
76+
// SplunkCollectorUrl = "https://localhost:8088/services/collector",
77+
// BatchIntervalInMiliseconds = 5000,
78+
// BatchSizeCount = 100,
79+
// ChannelIdType = HECConfiguration.ChannelIdOption.None,
80+
81+
// Token = "753c5a9c-fb59-4da0-9064-947f99dc20ba"
82+
// },
83+
// SocketConfiguration = new SocketConfiguration()
84+
// {
85+
// HostName = "localhost",
86+
// Port = 8111
87+
// }
88+
//};
89+
return result;
7590
}
7691
}
7792
}

src/SampleWebAPI/appsettings.Development.json

+17-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,21 @@
66
"System": "Information",
77
"Microsoft": "Information"
88
}
9+
},
10+
"Splunk": {
11+
"HecConfiguration": {
12+
"BatchIntervalInMiliseconds": 5000,
13+
"BatchSizeCount": 10,
14+
"ChannelIdType": "None",
15+
"DefaultTimeoutInMiliseconds": 10000,
16+
"SplunkCollectorUrl": "https://localhost:8088/services/collector/",
17+
"Token": "753c5a9c-fb59-4da0-9064-947f99dc20ba",
18+
"UseAuthTokenAsQueryString": false
19+
},
20+
"SocketConfiguration": {
21+
"HostName": "localhost",
22+
"Port": 4242,
23+
"Threshold": "Warning"
24+
}
925
}
10-
}
26+
}

src/SampleWebAPI/appsettings.json

+17-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,22 @@
1010
"LogLevel": {
1111
"Default": "Warning"
1212
}
13+
},
14+
"Splunk": {
15+
"HecConfiguration": {
16+
"BatchIntervalInMiliseconds": 5000,
17+
"BatchSizeCount": 10,
18+
"ChannelIdType": "None",
19+
"DefaultTimeoutInMiliseconds": 10000,
20+
"SplunkCollectorUrl": "https://localhost:8088/services/collector/",
21+
"Token": "753c5a9c-fb59-4da0-9064-947f99dc20ba",
22+
"UseAuthTokenAsQueryString": false
23+
},
24+
"SocketConfiguration": {
25+
"HostName": "localhost",
26+
"Port": 4242,
27+
"Threshold": "Warning"
28+
}
1329
}
1430
}
15-
}
31+
}

src/SplunkLogger.sln

-6
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SplunkLogger", "SplunkLogge
55
EndProject
66
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleWebAPI", "SampleWebAPI\SampleWebAPI.csproj", "{8D6EF394-5E88-4D15-97C0-FF2860DF53F3}"
77
EndProject
8-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VTEXSplunkLogger", "VTEXSplunkLogger\VTEXSplunkLogger.csproj", "{4C4CFC3E-D748-4A81-ADC9-55B4F0ED1C69}"
9-
EndProject
108
Global
119
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1210
Debug|Any CPU = Debug|Any CPU
@@ -21,10 +19,6 @@ Global
2119
{8D6EF394-5E88-4D15-97C0-FF2860DF53F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
2220
{8D6EF394-5E88-4D15-97C0-FF2860DF53F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
2321
{8D6EF394-5E88-4D15-97C0-FF2860DF53F3}.Release|Any CPU.Build.0 = Release|Any CPU
24-
{4C4CFC3E-D748-4A81-ADC9-55B4F0ED1C69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
25-
{4C4CFC3E-D748-4A81-ADC9-55B4F0ED1C69}.Debug|Any CPU.Build.0 = Debug|Any CPU
26-
{4C4CFC3E-D748-4A81-ADC9-55B4F0ED1C69}.Release|Any CPU.ActiveCfg = Release|Any CPU
27-
{4C4CFC3E-D748-4A81-ADC9-55B4F0ED1C69}.Release|Any CPU.Build.0 = Release|Any CPU
2822
EndGlobalSection
2923
GlobalSection(MonoDevelopProperties) = preSolution
3024
description = C# .Net Core 2 Splunk ILogger Compatible Implementation

src/SplunkLogger/Configurations/HECConfiguration.cs

+8-5
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,33 @@ public enum ChannelIdOption
1616
/// <summary>
1717
/// Gets or sets the batch interval in miliseconds.
1818
/// </summary>
19-
public uint BatchIntervalInMiliseconds { get; set; } = 5000; // 5 seconds
19+
public uint BatchIntervalInMiliseconds { get; set; }
2020

2121
/// <summary>
2222
/// Gets or sets the batch size count.
2323
/// </summary>
24-
public uint BatchSizeCount { get; set; } = 10;
24+
public uint BatchSizeCount { get; set; }
2525

2626
/// <summary>
2727
/// Gets or sets the default timeout in miliseconds.
2828
/// </summary>
29-
public int DefaultTimeoutInMiliseconds { get; set; } = 10000; // 10 seconds
29+
public int DefaultTimeoutInMiliseconds { get; set; }
3030

3131
/// <summary>
3232
/// Gets or sets the splunk collector URL.
3333
/// </summary>
3434
public string SplunkCollectorUrl { get; set; }
3535

3636
/// <summary>
37-
/// Gets or sets indication to use or not hec token autentication at query string
37+
/// Gets or sets indication to use or not hec token autentication at query string.
3838
/// </summary>
3939
public bool UseAuthTokenAsQueryString { get; set; }
4040

4141
/// <summary>
42-
/// Gets or sets indication to use or not channel identification when using raw endpoint
42+
/// Gets or sets indication to use or not channel identification when using raw endpoint.
43+
/// It's important to say that Splunk documentation indicates that ChannelId parameter is only
44+
/// required for Splunk versions older than 6.7.0.
45+
/// So if you have earlier version you can supress send this extra data by using <value>ChannelIdOption.None</value>
4346
/// </summary>
4447
public ChannelIdOption ChannelIdType { get; set; } = ChannelIdOption.None;
4548

src/SplunkLogger/Configurations/SplunkLoggerConfiguration.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ public class SplunkLoggerConfiguration
2020
/// <summary>
2121
/// Gets or sets the threshold.
2222
/// </summary>
23-
public LogLevel Threshold { get; set; } = LogLevel.Warning;
23+
public LogLevel Threshold { get; set; }
2424
}
2525
}

src/SplunkLogger/LoggerFactoryExtensions.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public static class LoggerFactoryExtensions
1515
/// <param name="loggerFactory">Logger factory.</param>
1616
/// <param name="configuration">Configuration.</param>
1717
/// <param name="formatter">Custom text formatter.</param>
18-
public static ILoggerFactory AddHECRawSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter)
18+
public static ILoggerFactory AddHECRawSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter = null)
1919
{
2020
loggerFactory.AddProvider(new SplunkHECRawLoggerProvider(configuration, formatter));
2121
return loggerFactory;
@@ -27,7 +27,7 @@ public static ILoggerFactory AddHECRawSplunkLogger(this ILoggerFactory loggerFac
2727
/// <param name="loggerFactory">Logger factory.</param>
2828
/// <param name="configuration">Configuration.</param>
2929
/// <param name="formatter">Custom text formatter.</param>
30-
public static ILoggerFactory AddHECJsonSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter)
30+
public static ILoggerFactory AddHECJsonSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter = null)
3131
{
3232
loggerFactory.AddProvider(new SplunkHECJsonLoggerProvider(configuration, formatter));
3333
return loggerFactory;
@@ -39,7 +39,7 @@ public static ILoggerFactory AddHECJsonSplunkLogger(this ILoggerFactory loggerFa
3939
/// <param name="loggerFactory">Logger factory.</param>
4040
/// <param name="configuration">Configuration.</param>
4141
/// <param name="formatter">Custom text formatter.</param>
42-
public static ILoggerFactory AddTcpSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter)
42+
public static ILoggerFactory AddTcpSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter = null)
4343
{
4444
loggerFactory.AddProvider(new SplunkTcpLoggerProvider(configuration, formatter));
4545
return loggerFactory;
@@ -51,7 +51,7 @@ public static ILoggerFactory AddTcpSplunkLogger(this ILoggerFactory loggerFactor
5151
/// <param name="loggerFactory">Logger factory.</param>
5252
/// <param name="configuration">Configuration.</param>
5353
/// <param name="formatter">Custom text formatter.</param>
54-
public static ILoggerFactory AddUdpSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter)
54+
public static ILoggerFactory AddUdpSplunkLogger(this ILoggerFactory loggerFactory, SplunkLoggerConfiguration configuration, ILoggerFormatter formatter = null)
5555
{
5656
loggerFactory.AddProvider(new SplunkUdpLoggerProvider(configuration, formatter));
5757
return loggerFactory;

src/VTEXSplunkLogger/ByteArrayExtensions.cs

-17
This file was deleted.

src/VTEXSplunkLogger/DateTimeExtensions.cs

-20
This file was deleted.

0 commit comments

Comments
 (0)