internal static object Run(LogsOptions options) { using var loggerFactory = LoggerFactory.Create(builder => { builder.AddOpenTelemetry((opt) => { opt.IncludeFormattedMessage = true; if (options.UseExporter.Equals("otlp", StringComparison.OrdinalIgnoreCase)) { /* * 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 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 <Program>(); logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99); return(null); }
internal static object Run(LogsOptions options) { using var loggerFactory = LoggerFactory.Create(builder => { builder.AddOpenTelemetry((opt) => { opt.IncludeFormattedMessage = true; opt.IncludeScopes = true; if (options.UseExporter.Equals("otlp", StringComparison.OrdinalIgnoreCase)) { /* * 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 -p 4318:4318 -v $(pwd):/cfg otel/opentelemetry-collector:0.48.0 --config=/cfg/otlp-collector-example/config.yaml * * - On Windows use: * docker run --rm -it -p 4317:4317 -p 4318:4318 -v "%cd%":/cfg otel/opentelemetry-collector:0.48.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 logs to the stdout of its terminal. * */ // Adding the OtlpExporter creates a GrpcChannel. // This switch must be set before creating a GrpcChannel 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); if (options.Protocol.Trim().ToLower().Equals("grpc")) { opt.AddOtlpExporter(otlpOptions => { otlpOptions.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.Grpc; }); } else if (options.Protocol.Trim().ToLower().Equals("http/protobuf")) { opt.AddOtlpExporter(otlpOptions => { otlpOptions.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.HttpProtobuf; }); } else { System.Console.WriteLine($"Export protocol {options.Protocol} is not supported. Default protocol 'grpc' will be used."); opt.AddOtlpExporter(otlpOptions => { otlpOptions.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.Grpc; }); } } else { opt.AddConsoleExporter(); } }); }); var logger = loggerFactory.CreateLogger <Program>(); using (logger.BeginScope("My scope 1 with {food} and {color}", "apple", "green")) using (logger.BeginScope("My scope 2 with {food} and {color}", "banana", "yellow")) { logger.LogInformation("Hello from {name} {price}.", "tomato", 2.99); } return(null); }