@@ -52,7 +52,7 @@ std::string span_name = "CurrencyService/Convert";
52
52
auto span =
53
53
get_tracer ("currencyservice")->StartSpan(span_name,
54
54
{{SemanticConventions::kRpcSystem, "grpc"},
55
- {SemanticConventions::kRpcService, "CurrencyService"},
55
+ {SemanticConventions::kRpcService, "oteldemo. CurrencyService"},
56
56
{SemanticConventions::kRpcMethod, "Convert"},
57
57
{SemanticConventions::kRpcGrpcStatusCode, 0}},
58
58
options);
@@ -148,16 +148,10 @@ void initMeter()
148
148
{
149
149
// Build MetricExporter
150
150
otlp_exporter::OtlpGrpcMetricExporterOptions otlpOptions;
151
-
152
- // Configuration via environment variable not supported yet
153
- otlpOptions.endpoint = "otelcol:4317";
154
- otlpOptions.aggregation_temporality = metric_sdk::AggregationTemporality::kDelta;
155
151
auto exporter = otlp_exporter::OtlpGrpcMetricExporterFactory::Create(otlpOptions);
156
152
157
153
// Build MeterProvider and Reader
158
154
metric_sdk::PeriodicExportingMetricReaderOptions options;
159
- options.export_interval_millis = std::chrono::milliseconds(1000);
160
- options.export_timeout_millis = std::chrono::milliseconds(500);
161
155
std::unique_ptr<metric_sdk::MetricReader> reader{
162
156
new metric_sdk::PeriodicExportingMetricReader(std::move(exporter), options) };
163
157
auto provider = std::shared_ptr<metrics_api::MeterProvider>(new metric_sdk::MeterProvider());
@@ -205,4 +199,38 @@ CurrencyCounter(to_code);
205
199
206
200
## Logs
207
201
208
- TBD
202
+ The OpenTelemetry ` LoggerProvider ` is initialized from ` main() ` using the
203
+ ` initLogger() ` function defined in ` logger_common.h ` .
204
+
205
+ ``` cpp
206
+ void initLogger () {
207
+ otlp::OtlpGrpcLogRecordExporterOptions loggerOptions;
208
+ auto exporter = otlp::OtlpGrpcLogRecordExporterFactory::Create(loggerOptions);
209
+ auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter));
210
+ std::vector< std::unique_ptr<logs_sdk::LogRecordProcessor > > processors;
211
+ processors.push_back(std::move(processor));
212
+ auto context = logs_sdk::LoggerContextFactory::Create(std::move(processors));
213
+ std::shared_ptr< logs::LoggerProvider > provider = logs_sdk::LoggerProviderFactory::Create(std::move(context));
214
+ opentelemetry::logs::Provider::SetLoggerProvider (provider);
215
+ }
216
+ ```
217
+
218
+ ### Using the LoggerProvider
219
+
220
+ The initialized Logger Provider is called from ` main ` in ` server.cpp ` :
221
+
222
+ ``` cpp
223
+ logger = getLogger(name);
224
+ ```
225
+
226
+ It assigns the logger to a local variable called ` logger ` :
227
+
228
+ ``` cpp
229
+ nostd::shared_ptr<opentelemetry::logs::Logger> logger;
230
+ ```
231
+
232
+ Which is then used throughout the code whenever we need to log a line:
233
+
234
+ ``` cpp
235
+ logger->Info (std::string(__ func__ ) + " conversion successful");
236
+ ```
0 commit comments