summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/logs/exporter.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/logs/exporter.h
parentInitial commit. (diff)
downloadceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz
ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/logs/exporter.h')
-rw-r--r--src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/logs/exporter.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/logs/exporter.h b/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/logs/exporter.h
new file mode 100644
index 000000000..85c58e9f1
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/logs/exporter.h
@@ -0,0 +1,62 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+#pragma once
+#ifdef ENABLE_LOGS_PREVIEW
+
+# include <memory>
+# include <vector>
+# include "opentelemetry/nostd/span.h"
+# include "opentelemetry/sdk/common/exporter_utils.h"
+# include "opentelemetry/sdk/logs/processor.h"
+# include "opentelemetry/sdk/logs/recordable.h"
+
+OPENTELEMETRY_BEGIN_NAMESPACE
+namespace sdk
+{
+namespace logs
+{
+/**
+ * LogExporter defines the interface that log exporters must implement.
+ */
+class LogExporter
+{
+public:
+ virtual ~LogExporter() = default;
+
+ /**
+ * Create a log recordable. This object will be used to record log data and
+ * will subsequently be passed to LogExporter::Export. Vendors can implement
+ * custom recordables or use the default LogRecord recordable provided by the
+ * SDK.
+ * @return a newly initialized Recordable object
+ *
+ * Note: This method must be callable from multiple threads.
+ */
+ virtual std::unique_ptr<Recordable> MakeRecordable() noexcept = 0;
+
+ /**
+ * Exports the batch of log records to their export destination.
+ * This method must not be called concurrently for the same exporter instance.
+ * The exporter may attempt to retry sending the batch, but should drop
+ * and return kFailure after a certain timeout.
+ * @param records a span of unique pointers to log records
+ * @returns an ExportResult code (whether export was success or failure)
+ */
+ virtual sdk::common::ExportResult Export(
+ const nostd::span<std::unique_ptr<Recordable>> &records) noexcept = 0;
+
+ /**
+ * Marks the exporter as ShutDown and cleans up any resources as required.
+ * Shutdown should be called only once for each Exporter instance.
+ * @param timeout minimum amount of microseconds to wait for shutdown before giving up and
+ * returning failure.
+ * @return true if the exporter shutdown succeeded, false otherwise
+ */
+ virtual bool Shutdown(
+ std::chrono::microseconds timeout = std::chrono::microseconds::max()) noexcept = 0;
+};
+} // namespace logs
+} // namespace sdk
+OPENTELEMETRY_END_NAMESPACE
+#endif