Skip to content

Commit

Permalink
[fix](tracing) Fix opentelemetry log output to be.out (apache#11856)
Browse files Browse the repository at this point in the history
  • Loading branch information
luozenglin authored Sep 18, 2022
1 parent 4f98146 commit cb06e67
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
18 changes: 18 additions & 0 deletions be/src/util/telemetry/telemetry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
#include "opentelemetry/exporters/otlp/otlp_http_exporter.h"
#include "opentelemetry/exporters/zipkin/zipkin_exporter.h"
#include "opentelemetry/nostd/shared_ptr.h"
#include "opentelemetry/sdk/common/attribute_utils.h"
#include "opentelemetry/sdk/common/global_log_handler.h"
#include "opentelemetry/sdk/trace/batch_span_processor.h"
#include "opentelemetry/sdk/trace/tracer_provider.h"
#include "opentelemetry/trace/propagation/http_trace_context.h"
Expand All @@ -38,6 +40,18 @@ namespace zipkin = opentelemetry::exporter::zipkin;
namespace resource = opentelemetry::sdk::resource;
namespace propagation = opentelemetry::context::propagation;
namespace otlp = opentelemetry::exporter::otlp;
namespace internal_log = opentelemetry::sdk::common::internal_log;

class OpenTelemetryLogHandler : public internal_log::LogHandler {
public:
void Handle(internal_log::LogLevel level, const char* file, int line, const char* msg,
const opentelemetry::sdk::common::AttributeMap& attributes) noexcept override {
if ((level == internal_log::LogLevel::Error || level == internal_log::LogLevel::Warning) &&
file != nullptr && msg != nullptr) {
LOG(WARNING) << fmt::format("OpenTelemetry File: {}:{} {}", file, line, msg);
}
}
};

void doris::telemetry::init_tracer() {
if (!doris::config::enable_tracing) {
Expand Down Expand Up @@ -82,4 +96,8 @@ void doris::telemetry::init_tracer() {
propagation::GlobalTextMapPropagator::SetGlobalPropagator(
nostd::shared_ptr<propagation::TextMapPropagator>(
new opentelemetry::trace::propagation::HttpTraceContext()));

// Output OpenTelemetry logs by glog
internal_log::GlobalLogHandler::SetLogHandler(
nostd::shared_ptr<internal_log::LogHandler>(new OpenTelemetryLogHandler()));
}
9 changes: 5 additions & 4 deletions thirdparty/patches/opentelemetry-cpp-1.4.0.patch
Original file line number Diff line number Diff line change
Expand Up @@ -301,14 +301,15 @@ index ecd6dab..1aaa220 100644
} // namespace sdk
diff --git a/sdk/src/common/threadlocal.cc b/sdk/src/common/threadlocal.cc
new file mode 100644
index 0000000..1f8b6b1
index 0000000..ec2038b
--- /dev/null
+++ b/sdk/src/common/threadlocal.cc
@@ -0,0 +1,82 @@
@@ -0,0 +1,83 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+#include <opentelemetry/common/threadlocal.h>
+#include "opentelemetry/sdk/common/global_log_handler.h"
+
+#include <pthread.h>
+#include <memory>
Expand Down Expand Up @@ -360,7 +361,7 @@ index 0000000..1f8b6b1
+ std::stringstream ss;
+ ss << "[thread local] pthread_key_create() failed, cannot add destructor to thread: "
+ << "error " << ret;
+ fprintf(stderr, "%s\n", ss.str().c_str());
+ OTEL_INTERNAL_LOG_ERROR(ss.str());
+ }
+}
+
Expand All @@ -382,7 +383,7 @@ index 0000000..1f8b6b1
+ std::stringstream ss;
+ ss << "[thread local] pthread_setspecific() failed, cannot update destructor list: "
+ << "error " << ret;
+ fprintf(stderr, "%s\n", ss.str().c_str());
+ OTEL_INTERNAL_LOG_ERROR(ss.str());
+ }
+}
+} // namespace internal_threadlocal
Expand Down

0 comments on commit cb06e67

Please sign in to comment.