|
24 | 24 | // Note: Switch between Explicit/Exponential by setting HistogramAggregation in appsettings.json |
25 | 25 | var histogramAggregation = appBuilder.Configuration.GetValue("HistogramAggregation", defaultValue: "explicit")!.ToLowerInvariant(); |
26 | 26 |
|
27 | | -// Build a resource configuration action to set service information. |
28 | | -Action<ResourceBuilder> configureResource = r => r.AddService( |
29 | | - serviceName: appBuilder.Configuration.GetValue("ServiceName", defaultValue: "otel-test")!, |
30 | | - serviceVersion: typeof(Program).Assembly.GetName().Version?.ToString() ?? "unknown", |
31 | | - serviceInstanceId: Environment.MachineName); |
32 | | - |
33 | 27 | // Create a service to expose ActivitySource, and Metric Instruments |
34 | 28 | // for manual instrumentation |
35 | 29 | appBuilder.Services.AddSingleton<Instrumentation>(); |
36 | 30 |
|
37 | | -// Configure OpenTelemetry tracing & metrics with auto-start using the |
| 31 | +// Clear default logging providers used by WebApplication host. |
| 32 | +appBuilder.Logging.ClearProviders(); |
| 33 | + |
| 34 | +// Configure OpenTelemetry logging, metrics, & tracing with auto-start using the |
38 | 35 | // AddOpenTelemetry extension from OpenTelemetry.Extensions.Hosting. |
39 | 36 | appBuilder.Services.AddOpenTelemetry() |
40 | | - .ConfigureResource(configureResource) |
| 37 | + .ConfigureResource(r => r |
| 38 | + .AddService( |
| 39 | + serviceName: appBuilder.Configuration.GetValue("ServiceName", defaultValue: "otel-test")!, |
| 40 | + serviceVersion: typeof(Program).Assembly.GetName().Version?.ToString() ?? "unknown", |
| 41 | + serviceInstanceId: Environment.MachineName)) |
41 | 42 | .WithTracing(builder => |
42 | 43 | { |
43 | 44 | // Tracing |
|
121 | 122 | builder.AddConsoleExporter(); |
122 | 123 | break; |
123 | 124 | } |
124 | | - }); |
125 | | - |
126 | | -// Clear default logging providers used by WebApplication host. |
127 | | -appBuilder.Logging.ClearProviders(); |
128 | | - |
129 | | -// Configure OpenTelemetry Logging. |
130 | | -appBuilder.Logging.AddOpenTelemetry(options => |
131 | | -{ |
132 | | - // Note: See appsettings.json Logging:OpenTelemetry section for configuration. |
133 | | - |
134 | | - var resourceBuilder = ResourceBuilder.CreateDefault(); |
135 | | - configureResource(resourceBuilder); |
136 | | - options.SetResourceBuilder(resourceBuilder); |
137 | | - |
138 | | - switch (logExporter) |
| 125 | + }) |
| 126 | + .WithLogging(builder => |
139 | 127 | { |
140 | | - case "otlp": |
141 | | - options.AddOtlpExporter(otlpOptions => |
142 | | - { |
143 | | - // Use IConfiguration directly for Otlp exporter endpoint option. |
144 | | - otlpOptions.Endpoint = new Uri(appBuilder.Configuration.GetValue("Otlp:Endpoint", defaultValue: "http://localhost:4317")!); |
145 | | - }); |
146 | | - break; |
147 | | - default: |
148 | | - options.AddConsoleExporter(); |
149 | | - break; |
150 | | - } |
151 | | -}); |
| 128 | + // Note: See appsettings.json Logging:OpenTelemetry section for configuration. |
| 129 | + |
| 130 | + switch (logExporter) |
| 131 | + { |
| 132 | + case "otlp": |
| 133 | + builder.AddOtlpExporter(otlpOptions => |
| 134 | + { |
| 135 | + // Use IConfiguration directly for Otlp exporter endpoint option. |
| 136 | + otlpOptions.Endpoint = new Uri(appBuilder.Configuration.GetValue("Otlp:Endpoint", defaultValue: "http://localhost:4317")!); |
| 137 | + }); |
| 138 | + break; |
| 139 | + default: |
| 140 | + builder.AddConsoleExporter(); |
| 141 | + break; |
| 142 | + } |
| 143 | + }); |
152 | 144 |
|
153 | 145 | appBuilder.Services.AddControllers(); |
154 | 146 |
|
|
0 commit comments