Skip to content

Commit 97e9bf7

Browse files
Add logs instructions to currencyservice (#4015)
1 parent 6652bd0 commit 97e9bf7

File tree

1 file changed

+36
-8
lines changed

1 file changed

+36
-8
lines changed

content/en/docs/demo/services/currency.md

+36-8
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ std::string span_name = "CurrencyService/Convert";
5252
auto span =
5353
get_tracer("currencyservice")->StartSpan(span_name,
5454
{{SemanticConventions::kRpcSystem, "grpc"},
55-
{SemanticConventions::kRpcService, "CurrencyService"},
55+
{SemanticConventions::kRpcService, "oteldemo.CurrencyService"},
5656
{SemanticConventions::kRpcMethod, "Convert"},
5757
{SemanticConventions::kRpcGrpcStatusCode, 0}},
5858
options);
@@ -148,16 +148,10 @@ void initMeter()
148148
{
149149
// Build MetricExporter
150150
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;
155151
auto exporter = otlp_exporter::OtlpGrpcMetricExporterFactory::Create(otlpOptions);
156152

157153
// Build MeterProvider and Reader
158154
metric_sdk::PeriodicExportingMetricReaderOptions options;
159-
options.export_interval_millis = std::chrono::milliseconds(1000);
160-
options.export_timeout_millis = std::chrono::milliseconds(500);
161155
std::unique_ptr<metric_sdk::MetricReader> reader{
162156
new metric_sdk::PeriodicExportingMetricReader(std::move(exporter), options) };
163157
auto provider = std::shared_ptr<metrics_api::MeterProvider>(new metric_sdk::MeterProvider());
@@ -205,4 +199,38 @@ CurrencyCounter(to_code);
205199

206200
## Logs
207201

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

Comments
 (0)