diff --git a/Directory.Packages.props b/Directory.Packages.props
index cba72e2..ce40da9 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -8,10 +8,13 @@
+
+
+
diff --git a/ServiceLevelIndicators.sln b/ServiceLevelIndicators.sln
index 8b689a5..9455ef1 100644
--- a/ServiceLevelIndicators.sln
+++ b/ServiceLevelIndicators.sln
@@ -39,6 +39,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleMinimalApiSli", "samp
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenerateSli", "sample\GenerateSli\GenerateSli.csproj", "{94FA59E4-26A3-4457-8AD7-4091205F1D06}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleConsoleSLI", "sample\ConsoleApp\SampleConsoleSLI.csproj", "{08C09D03-67BE-25CF-68EA-8A94E1EBFE2F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -85,6 +87,10 @@ Global
{94FA59E4-26A3-4457-8AD7-4091205F1D06}.Debug|Any CPU.Build.0 = Debug|Any CPU
{94FA59E4-26A3-4457-8AD7-4091205F1D06}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94FA59E4-26A3-4457-8AD7-4091205F1D06}.Release|Any CPU.Build.0 = Release|Any CPU
+ {08C09D03-67BE-25CF-68EA-8A94E1EBFE2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {08C09D03-67BE-25CF-68EA-8A94E1EBFE2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {08C09D03-67BE-25CF-68EA-8A94E1EBFE2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {08C09D03-67BE-25CF-68EA-8A94E1EBFE2F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -100,6 +106,7 @@ Global
{A776B107-2730-4EB6-B481-7F3EFAC2A2A8} = {2C6E9F62-8968-455A-AD02-DC795296471A}
{D25F951D-CE1A-47D1-8421-F71BEBF3A356} = {A7D8DEF7-8D37-4DE9-B935-7D9FF571132B}
{94FA59E4-26A3-4457-8AD7-4091205F1D06} = {A7D8DEF7-8D37-4DE9-B935-7D9FF571132B}
+ {08C09D03-67BE-25CF-68EA-8A94E1EBFE2F} = {A7D8DEF7-8D37-4DE9-B935-7D9FF571132B}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5C1087B8-93AA-4847-9D18-6A16E754593F}
diff --git a/sample/ConsoleApp/Program.cs b/sample/ConsoleApp/Program.cs
new file mode 100644
index 0000000..107e9c9
--- /dev/null
+++ b/sample/ConsoleApp/Program.cs
@@ -0,0 +1,66 @@
+using System.Diagnostics;
+using System.Reflection;
+using Azure.Core;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using OpenTelemetry;
+using OpenTelemetry.Logs;
+using OpenTelemetry.Metrics;
+using OpenTelemetry.Resources;
+using ServiceLevelIndicators;
+
+#pragma warning disable CA1848 // Use the LoggerMessage delegates
+
+const string ProgramName = "SampleConsoleSLI";
+string version = Assembly
+ .GetExecutingAssembly()
+ .GetCustomAttribute()!
+ .Version;
+ResourceBuilder resourceBuilder = ResourceBuilder
+ .CreateEmpty()
+ .AddService(ProgramName, serviceVersion: version, serviceInstanceId: Environment.MachineName);
+
+
+ServiceCollection services = new();
+services.Configure(r =>
+{
+ r.CustomerResourceId = ProgramName; // Customer ID if this work is done on behalf of a customer.
+ r.LocationId = ServiceLevelIndicator.CreateLocationId("public", AzureLocation.WestUS3.Name);
+});
+
+services
+ .AddLogging(builder =>
+ {
+ builder.AddOpenTelemetry(options =>
+ {
+ options.SetResourceBuilder(resourceBuilder);
+ options.AddConsoleExporter();
+ });
+ })
+ .AddSingleton(); ;
+
+var serviceProvider = services.BuildServiceProvider();
+
+var logger = serviceProvider.GetRequiredService>();
+
+using MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder()
+ .SetResourceBuilder(resourceBuilder)
+ .AddConsoleExporter()
+ .AddServiceLevelIndicatorInstrumentation()
+ .Build();
+
+var serviceLevelIndicator = serviceProvider.GetRequiredService();
+using MeasuredOperation measuredOperation = serviceLevelIndicator.StartMeasuring("OperationWork");
+
+try
+{
+ logger.LogInformation("Starting to do some work...");
+ await Task.Delay(1000); // Simulate some work
+ logger.LogInformation("Work done.");
+ measuredOperation.SetActivityStatusCode(ActivityStatusCode.Ok);
+}
+catch (Exception ex)
+{
+ measuredOperation.SetActivityStatusCode(ActivityStatusCode.Error);
+ logger.LogError(ex, "An error occurred doing work.");
+}
diff --git a/sample/ConsoleApp/SampleConsoleSLI.csproj b/sample/ConsoleApp/SampleConsoleSLI.csproj
new file mode 100644
index 0000000..cb5659a
--- /dev/null
+++ b/sample/ConsoleApp/SampleConsoleSLI.csproj
@@ -0,0 +1,20 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+