diff --git a/examples/Console/Examples.Console.csproj b/examples/Console/Examples.Console.csproj
index 84ecf4f5b..e2eaf19f5 100644
--- a/examples/Console/Examples.Console.csproj
+++ b/examples/Console/Examples.Console.csproj
@@ -37,5 +37,6 @@
+
diff --git a/examples/Console/Program.cs b/examples/Console/Program.cs
index 7a40dbe16..afebf22d8 100644
--- a/examples/Console/Program.cs
+++ b/examples/Console/Program.cs
@@ -43,12 +43,13 @@ namespace Examples.Console
/// Arguments from command line.
public static void Main(string[] args)
{
- Parser.Default.ParseArguments(args)
+ Parser.Default.ParseArguments(args)
.MapResult(
(JaegerOptions options) => TestJaegerExporter.Run(options.Host, options.Port),
(ZipkinOptions options) => TestZipkinExporter.Run(options.Uri),
(PrometheusOptions options) => TestPrometheusExporter.Run(options.Port, options.DurationInMins),
(MetricsOptions options) => TestMetrics.Run(options),
+ (LogsOptions options) => TestLogs.Run(options),
(GrpcNetClientOptions options) => TestGrpcNetClient.Run(),
(HttpClientOptions options) => TestHttpClient.Run(),
(RedisOptions options) => TestRedis.Run(options.Uri),
@@ -169,6 +170,13 @@ namespace Examples.Console
public string Protocol { get; set; }
}
+ [Verb("logs", HelpText = "Specify the options required to test Logs")]
+ internal class LogsOptions
+ {
+ [Option("useExporter", Default = "otlp", HelpText = "Options include otlp or console.", Required = false)]
+ public string UseExporter { get; set; }
+ }
+
[Verb("inmemory", HelpText = "Specify the options required to test InMemory Exporter")]
internal class InMemoryOptions
{
diff --git a/examples/Console/TestLogs.cs b/examples/Console/TestLogs.cs
new file mode 100644
index 000000000..aeb405c8b
--- /dev/null
+++ b/examples/Console/TestLogs.cs
@@ -0,0 +1,79 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using OpenTelemetry;
+using OpenTelemetry.Logs;
+
+namespace Examples.Console
+{
+ internal class TestLogs
+ {
+ internal static object Run(LogsOptions options)
+ {
+ using var loggerFactory = LoggerFactory.Create(builder =>
+ {
+ builder.AddOpenTelemetry((opt) =>
+ {
+ opt.IncludeFormattedMessage = true;
+ if (options.UseExporter.ToLower() == "otlp")
+ {
+ /*
+ * Prerequisite to run this example:
+ * Set up an OpenTelemetry Collector to run on local docker.
+ *
+ * Open a terminal window at the examples/Console/ directory and
+ * launch the OpenTelemetry Collector with an OTLP receiver, by running:
+ *
+ * - On Unix based systems use:
+ * docker run --rm -it -p 4317:4317 -v $(pwd):/cfg otel/opentelemetry-collector:0.33.0 --config=/cfg/otlp-collector-example/config.yaml
+ *
+ * - On Windows use:
+ * docker run --rm -it -p 4317:4317 -v "%cd%":/cfg otel/opentelemetry-collector:0.33.0 --config=/cfg/otlp-collector-example/config.yaml
+ *
+ * Open another terminal window at the examples/Console/ directory and
+ * launch the OTLP example by running:
+ *
+ * dotnet run logs --useExporter otlp
+ *
+ * The OpenTelemetry Collector will output all received metrics to the stdout of its terminal.
+ *
+ */
+
+ // Adding the OtlpExporter creates a GrpcChannel.
+ // This switch must be set before creating a GrpcChannel/HttpClient when calling an insecure gRPC service.
+ // See: https://docs.microsoft.com/aspnet/core/grpc/troubleshoot#call-insecure-grpc-services-with-net-core-client
+ AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
+
+ opt.AddOtlpExporter();
+ }
+ else
+ {
+ opt.AddConsoleExporter();
+ }
+ });
+ });
+
+ var logger = loggerFactory.CreateLogger();
+ logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99);
+ return null;
+ }
+ }
+}
diff --git a/examples/Console/otlp-collector-example/config.yaml b/examples/Console/otlp-collector-example/config.yaml
index 558ecf842..10b24b00a 100644
--- a/examples/Console/otlp-collector-example/config.yaml
+++ b/examples/Console/otlp-collector-example/config.yaml
@@ -21,3 +21,6 @@ service:
metrics:
receivers: [otlp]
exporters: [logging]
+ logs:
+ receivers: [otlp]
+ exporters: [logging]