Skip to content

Commit 22c4570

Browse files
committed
[CONFIGURATION] File configuration - configuration example
1 parent 495f497 commit 22c4570

31 files changed

+2286
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include "opentelemetry/sdk/common/global_log_handler.h"
5+
#include "opentelemetry/sdk/logs/read_write_log_record.h"
6+
#include "opentelemetry/sdk/logs/recordable.h"
7+
8+
#include "custom_log_record_exporter.h"
9+
10+
std::unique_ptr<opentelemetry::sdk::logs::Recordable>
11+
CustomLogRecordExporter::MakeRecordable() noexcept
12+
{
13+
auto recordable = std::make_unique<opentelemetry::sdk::logs::ReadWriteLogRecord>();
14+
return recordable;
15+
}
16+
17+
opentelemetry::sdk::common::ExportResult CustomLogRecordExporter::Export(
18+
const opentelemetry::nostd::span<std::unique_ptr<opentelemetry::sdk::logs::Recordable>>
19+
& /* records */) noexcept
20+
{
21+
OTEL_INTERNAL_LOG_ERROR("CustomLogRecordExporter::Export(): YOUR CODE HERE");
22+
return opentelemetry::sdk::common::ExportResult::kSuccess;
23+
}
24+
25+
bool CustomLogRecordExporter::ForceFlush(std::chrono::microseconds /* timeout */) noexcept
26+
{
27+
OTEL_INTERNAL_LOG_ERROR("CustomLogRecordExporter::ForceFlush(): YOUR CODE HERE");
28+
return false;
29+
}
30+
31+
bool CustomLogRecordExporter::Shutdown(std::chrono::microseconds /* timeout */) noexcept
32+
{
33+
OTEL_INTERNAL_LOG_ERROR("CustomLogRecordExporter::Shutdown(): YOUR CODE HERE");
34+
return false;
35+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <chrono>
7+
#include <memory>
8+
#include <string>
9+
10+
#include "opentelemetry/nostd/span.h"
11+
#include "opentelemetry/sdk/common/exporter_utils.h"
12+
#include "opentelemetry/sdk/logs/exporter.h"
13+
#include "opentelemetry/sdk/logs/recordable.h"
14+
15+
class CustomLogRecordExporter : public opentelemetry::sdk::logs::LogRecordExporter
16+
{
17+
public:
18+
CustomLogRecordExporter(const std::string & /* comment */) {}
19+
CustomLogRecordExporter(CustomLogRecordExporter &&) = delete;
20+
CustomLogRecordExporter(const CustomLogRecordExporter &) = delete;
21+
CustomLogRecordExporter &operator=(CustomLogRecordExporter &&) = delete;
22+
CustomLogRecordExporter &operator=(const CustomLogRecordExporter &other) = delete;
23+
~CustomLogRecordExporter() override = default;
24+
25+
std::unique_ptr<opentelemetry::sdk::logs::Recordable> MakeRecordable() noexcept override;
26+
27+
opentelemetry::sdk::common::ExportResult Export(
28+
const opentelemetry::nostd::span<std::unique_ptr<opentelemetry::sdk::logs::Recordable>>
29+
&records) noexcept override;
30+
31+
bool ForceFlush(std::chrono::microseconds timeout) noexcept override;
32+
33+
bool Shutdown(std::chrono::microseconds timeout) noexcept override;
34+
};
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include <string>
5+
#include <utility>
6+
7+
#include "opentelemetry/sdk/configuration/document_node.h"
8+
#include "opentelemetry/sdk/configuration/extension_log_record_exporter_configuration.h"
9+
#include "opentelemetry/sdk/configuration/registry.h"
10+
#include "opentelemetry/sdk/logs/exporter.h"
11+
12+
#include "custom_log_record_exporter.h"
13+
#include "custom_log_record_exporter_builder.h"
14+
15+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> CustomLogRecordExporterBuilder::Build(
16+
const opentelemetry::sdk::configuration::ExtensionLogRecordExporterConfiguration *model) const
17+
{
18+
// Read yaml attributes
19+
std::string comment = model->node->GetRequiredString("comment");
20+
21+
auto sdk = std::make_unique<CustomLogRecordExporter>(comment);
22+
23+
return sdk;
24+
}
25+
26+
void CustomLogRecordExporterBuilder::Register(opentelemetry::sdk::configuration::Registry *registry)
27+
{
28+
auto builder = std::make_unique<CustomLogRecordExporterBuilder>();
29+
registry->SetExtensionLogRecordExporterBuilder("my_custom_log_record_exporter",
30+
std::move(builder));
31+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/sdk/configuration/extension_log_record_exporter_builder.h"
9+
#include "opentelemetry/sdk/configuration/extension_log_record_exporter_configuration.h"
10+
#include "opentelemetry/sdk/configuration/registry.h"
11+
#include "opentelemetry/sdk/logs/exporter.h"
12+
13+
class CustomLogRecordExporterBuilder
14+
: public opentelemetry::sdk::configuration::ExtensionLogRecordExporterBuilder
15+
{
16+
public:
17+
static void Register(opentelemetry::sdk::configuration::Registry *registry);
18+
19+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter> Build(
20+
const opentelemetry::sdk::configuration::ExtensionLogRecordExporterConfiguration *model)
21+
const override;
22+
};
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include <utility>
5+
6+
#include "opentelemetry/sdk/common/global_log_handler.h"
7+
#include "opentelemetry/sdk/logs/read_write_log_record.h"
8+
#include "opentelemetry/sdk/logs/recordable.h"
9+
10+
#include "custom_log_record_processor.h"
11+
12+
std::unique_ptr<opentelemetry::sdk::logs::Recordable>
13+
CustomLogRecordProcessor::MakeRecordable() noexcept
14+
{
15+
auto recordable = std::make_unique<opentelemetry::sdk::logs::ReadWriteLogRecord>();
16+
return recordable;
17+
}
18+
19+
void CustomLogRecordProcessor::OnEmit(
20+
std::unique_ptr<opentelemetry::sdk::logs::Recordable> &&span) noexcept
21+
{
22+
OTEL_INTERNAL_LOG_ERROR("CustomLogRecordProcessor::OnEnd(): YOUR CODE HERE");
23+
auto unused = std::move(span);
24+
}
25+
26+
bool CustomLogRecordProcessor::ForceFlush(std::chrono::microseconds /* timeout */) noexcept
27+
{
28+
OTEL_INTERNAL_LOG_ERROR("CustomLogRecordProcessor::ForceFlush(): YOUR CODE HERE");
29+
return false;
30+
}
31+
32+
bool CustomLogRecordProcessor::Shutdown(std::chrono::microseconds /* timeout */) noexcept
33+
{
34+
OTEL_INTERNAL_LOG_ERROR("CustomLogRecordProcessor::Shutdown(): YOUR CODE HERE");
35+
return false;
36+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <chrono>
7+
#include <memory>
8+
#include <string>
9+
10+
#include "opentelemetry/sdk/logs/processor.h"
11+
#include "opentelemetry/sdk/logs/recordable.h"
12+
13+
class CustomLogRecordProcessor : public opentelemetry::sdk::logs::LogRecordProcessor
14+
{
15+
public:
16+
CustomLogRecordProcessor(const std::string &comment) : m_comment(comment) {}
17+
CustomLogRecordProcessor(CustomLogRecordProcessor &&) = delete;
18+
CustomLogRecordProcessor(const CustomLogRecordProcessor &) = delete;
19+
CustomLogRecordProcessor &operator=(CustomLogRecordProcessor &&) = delete;
20+
CustomLogRecordProcessor &operator=(const CustomLogRecordProcessor &other) = delete;
21+
~CustomLogRecordProcessor() override = default;
22+
23+
std::unique_ptr<opentelemetry::sdk::logs::Recordable> MakeRecordable() noexcept override;
24+
25+
void OnEmit(std::unique_ptr<opentelemetry::sdk::logs::Recordable> &&record) noexcept override;
26+
27+
bool ForceFlush(std::chrono::microseconds timeout) noexcept override;
28+
29+
bool Shutdown(std::chrono::microseconds timeout) noexcept override;
30+
31+
private:
32+
std::string m_comment;
33+
};
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include <string>
5+
#include <utility>
6+
7+
#include "opentelemetry/sdk/configuration/document_node.h"
8+
#include "opentelemetry/sdk/configuration/extension_log_record_processor_configuration.h"
9+
#include "opentelemetry/sdk/configuration/registry.h"
10+
#include "opentelemetry/sdk/logs/processor.h"
11+
12+
#include "custom_log_record_processor.h"
13+
#include "custom_log_record_processor_builder.h"
14+
15+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor>
16+
CustomLogRecordProcessorBuilder::Build(
17+
const opentelemetry::sdk::configuration::ExtensionLogRecordProcessorConfiguration *model) const
18+
{
19+
// Read yaml attributes
20+
std::string comment = model->node->GetRequiredString("comment");
21+
22+
auto sdk = std::make_unique<CustomLogRecordProcessor>(comment);
23+
24+
return sdk;
25+
}
26+
27+
void CustomLogRecordProcessorBuilder::Register(
28+
opentelemetry::sdk::configuration::Registry *registry)
29+
{
30+
auto builder = std::make_unique<CustomLogRecordProcessorBuilder>();
31+
registry->SetExtensionLogRecordProcessorBuilder("my_custom_log_record_processor",
32+
std::move(builder));
33+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/sdk/configuration/extension_log_record_processor_builder.h"
9+
#include "opentelemetry/sdk/configuration/extension_log_record_processor_configuration.h"
10+
#include "opentelemetry/sdk/configuration/registry.h"
11+
#include "opentelemetry/sdk/logs/processor.h"
12+
13+
class CustomLogRecordProcessorBuilder
14+
: public opentelemetry::sdk::configuration::ExtensionLogRecordProcessorBuilder
15+
{
16+
public:
17+
static void Register(opentelemetry::sdk::configuration::Registry *registry);
18+
19+
std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor> Build(
20+
const opentelemetry::sdk::configuration::ExtensionLogRecordProcessorConfiguration *model)
21+
const override;
22+
};
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include "opentelemetry/sdk/common/global_log_handler.h"
5+
6+
#include "custom_pull_metric_exporter.h"
7+
8+
opentelemetry::sdk::metrics::AggregationTemporality
9+
CustomPullMetricExporter::GetAggregationTemporality(
10+
opentelemetry::sdk::metrics::InstrumentType /* instrument_type */) const noexcept
11+
{
12+
OTEL_INTERNAL_LOG_ERROR("CustomPullMetricExporter::GetAggregationTemporality(): YOUR CODE HERE");
13+
return opentelemetry::sdk::metrics::AggregationTemporality::kCumulative;
14+
}
15+
16+
bool CustomPullMetricExporter::OnForceFlush(std::chrono::microseconds /* timeout */) noexcept
17+
{
18+
OTEL_INTERNAL_LOG_ERROR("CustomPullMetricExporter::OnForceFlush(): YOUR CODE HERE");
19+
return true;
20+
}
21+
22+
bool CustomPullMetricExporter::OnShutDown(std::chrono::microseconds /* timeout */) noexcept
23+
{
24+
OTEL_INTERNAL_LOG_ERROR("CustomPullMetricExporter::OnShutDown(): YOUR CODE HERE");
25+
return true;
26+
}
27+
28+
void CustomPullMetricExporter::OnInitialized() noexcept
29+
{
30+
OTEL_INTERNAL_LOG_ERROR("CustomPullMetricExporter::OnInitialized(): YOUR CODE HERE");
31+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <chrono>
7+
#include <string>
8+
9+
#include "opentelemetry/sdk/metrics/instruments.h"
10+
#include "opentelemetry/sdk/metrics/metric_reader.h"
11+
12+
class CustomPullMetricExporter : public opentelemetry::sdk::metrics::MetricReader
13+
{
14+
public:
15+
CustomPullMetricExporter(const std::string & /* comment */) {}
16+
CustomPullMetricExporter(CustomPullMetricExporter &&) = delete;
17+
CustomPullMetricExporter(const CustomPullMetricExporter &) = delete;
18+
CustomPullMetricExporter &operator=(CustomPullMetricExporter &&) = delete;
19+
CustomPullMetricExporter &operator=(const CustomPullMetricExporter &other) = delete;
20+
~CustomPullMetricExporter() override = default;
21+
22+
opentelemetry::sdk::metrics::AggregationTemporality GetAggregationTemporality(
23+
opentelemetry::sdk::metrics::InstrumentType instrument_type) const noexcept override;
24+
25+
bool OnForceFlush(std::chrono::microseconds timeout) noexcept override;
26+
27+
bool OnShutDown(std::chrono::microseconds timeout) noexcept override;
28+
29+
void OnInitialized() noexcept override;
30+
};

0 commit comments

Comments
 (0)