Skip to content

Commit fb94132

Browse files
committed
wip
1 parent 5559c65 commit fb94132

File tree

3 files changed

+46
-20
lines changed

3 files changed

+46
-20
lines changed

core/tracing/otel_tracer.cxx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#if defined(__GNUC__)
2323
#pragma GCC diagnostic push
2424
#pragma GCC diagnostic ignored "-Wsign-conversion"
25-
#pragma GCC diagnostic ignored "-Wdeprecated-builtins"
2625
#elif defined(__clang__)
2726
#pragma clang diagnostic push
2827
#pragma clang diagnostic ignored "-Wdeprecated-builtins"

tools/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ target_link_libraries(
4242
hdr_histogram_static
4343
asio
4444
opentelemetry_trace
45+
opentelemetry_exporter_ostream_logs
4546
opentelemetry_exporter_otlp_http
4647
opentelemetry_exporter_otlp_http_log)
4748

tools/get.cxx

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
#include <opentelemetry/sdk/trace/simple_processor_factory.h>
3939
#include <opentelemetry/sdk/trace/tracer_provider_factory.h>
4040

41+
#include <opentelemetry/exporters/ostream/log_record_exporter.h>
42+
#include <opentelemetry/exporters/ostream/log_record_exporter_factory.h>
43+
4144
#include <opentelemetry/exporters/otlp/otlp_environment.h>
4245
#include <opentelemetry/exporters/otlp/otlp_http.h>
4346
#include <opentelemetry/exporters/otlp/otlp_http_exporter_factory.h>
@@ -73,22 +76,6 @@ init_otel_tracer()
7376
std::shared_ptr<opentelemetry::trace::TracerProvider>{ std::move(provider) });
7477
}
7578

76-
void
77-
init_otel_logger()
78-
{
79-
opentelemetry::exporter::otlp::OtlpHttpLogRecordExporterOptions logger_options;
80-
auto exporter =
81-
opentelemetry::exporter::otlp::OtlpHttpLogRecordExporterFactory::Create(logger_options);
82-
auto processor =
83-
opentelemetry::sdk::logs::SimpleLogRecordProcessorFactory::Create(std::move(exporter));
84-
std::vector<std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor>> processors;
85-
processors.emplace_back(std::move(processor));
86-
auto context = opentelemetry::sdk::logs::LoggerContextFactory::Create(std::move(processors));
87-
std::shared_ptr<opentelemetry::logs::LoggerProvider> provider =
88-
opentelemetry::sdk::logs::LoggerProviderFactory::Create(std::move(context));
89-
opentelemetry::logs::Provider::SetLoggerProvider(provider);
90-
}
91-
9279
class get_app : public CLI::App
9380
{
9481
public:
@@ -123,20 +110,22 @@ class get_app : public CLI::App
123110
json_lines_,
124111
"Use JSON Lines format (https://jsonlines.org) to print results.");
125112

113+
add_flag("--use-http-logger", use_http_logger_, "Use HTTP logger instead of ostream.");
114+
126115
add_common_options(this, common_options_);
127116
allow_extras(true);
128117
}
129118

130119
[[nodiscard]] auto get_otel_tracer() const -> std::shared_ptr<opentelemetry::trace::Tracer>
131120
{
132121
auto provider = opentelemetry::trace::Provider::GetTracerProvider();
133-
return provider->GetTracer("cbc", couchbase::core::meta::sdk_version());
122+
return provider->GetTracer("cbc", couchbase::core::meta::sdk_semver());
134123
}
135124

136125
[[nodiscard]] auto get_otel_logger() const -> std::shared_ptr<opentelemetry::logs::Logger>
137126
{
138127
auto provider = opentelemetry::logs::Provider::GetLoggerProvider();
139-
return provider->GetLogger("cbc_logger", "cbc", OPENTELEMETRY_SDK_VERSION);
128+
return provider->GetLogger("cbc_logger", "cbc", couchbase::core::meta::sdk_semver());
140129
}
141130

142131
[[nodiscard]] auto execute() const -> int
@@ -204,7 +193,16 @@ class get_app : public CLI::App
204193
auto get_options = common_get_options;
205194
get_options.parent_span(couchbase::core::tracing::otel_request_span::wrap(span));
206195
auto [err, resp] = collection.get(document_id, get_options).get();
207-
logger->Error("error: {}", err.ec().message(), span->GetContext());
196+
logger->Warn("this is the message error");
197+
logger->Warn("this is the message error: {msg}",
198+
opentelemetry::common::MakeAttributes({
199+
{ "msg", err.ec().message() },
200+
}));
201+
logger->Warn("this is the message error: {msg} and some context",
202+
opentelemetry::common::MakeAttributes({
203+
{ "msg", err.ec().message() },
204+
}), span->GetContext());
205+
logger->Error("this is the message error: {}", err.ec().message(), span->GetContext());
208206

209207
if (json_lines_) {
210208
print_result_json_line(bucket_name, scope_name, collection_name, document_id, err, resp);
@@ -313,6 +311,32 @@ class get_app : public CLI::App
313311
}
314312
}
315313

314+
void init_otel_logger() const
315+
{
316+
using namespace opentelemetry;
317+
318+
if (use_http_logger_) {
319+
exporter::otlp::OtlpHttpLogRecordExporterOptions logger_options;
320+
auto exporter = exporter::otlp::OtlpHttpLogRecordExporterFactory::Create(logger_options);
321+
auto processor = sdk::logs::SimpleLogRecordProcessorFactory::Create(std::move(exporter));
322+
std::vector<std::unique_ptr<sdk::logs::LogRecordProcessor>> processors;
323+
processors.emplace_back(std::move(processor));
324+
auto context = sdk::logs::LoggerContextFactory::Create(std::move(processors));
325+
std::shared_ptr<logs::LoggerProvider> provider =
326+
sdk::logs::LoggerProviderFactory::Create(std::move(context));
327+
logs::Provider::SetLoggerProvider(provider);
328+
} else {
329+
auto exporter = exporter::logs::OStreamLogRecordExporterFactory::Create(std::cerr);
330+
auto processor = sdk::logs::SimpleLogRecordProcessorFactory::Create(std::move(exporter));
331+
std::vector<std::unique_ptr<sdk::logs::LogRecordProcessor>> processors;
332+
processors.emplace_back(std::move(processor));
333+
auto context = sdk::logs::LoggerContextFactory::Create(std::move(processors));
334+
std::shared_ptr<logs::LoggerProvider> provider =
335+
sdk::logs::LoggerProviderFactory::Create(std::move(context));
336+
logs::Provider::SetLoggerProvider(provider);
337+
}
338+
}
339+
316340
common_options common_options_{};
317341

318342
std::string bucket_name_{ default_bucket_name };
@@ -326,6 +350,8 @@ class get_app : public CLI::App
326350
bool json_lines_{ false };
327351
bool verbose_{ false };
328352

353+
bool use_http_logger_{ false };
354+
329355
std::vector<std::string> ids_{};
330356
};
331357
} // namespace

0 commit comments

Comments
 (0)