diff --git a/sdk/include/opentelemetry/sdk/configuration/batch_log_record_processor_configuration.h b/sdk/include/opentelemetry/sdk/configuration/batch_log_record_processor_configuration.h new file mode 100644 index 0000000000..17570f0552 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/batch_log_record_processor_configuration.h @@ -0,0 +1,38 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_processor_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_processor_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/logger_provider.json +// YAML-NODE: BatchLogRecordProcessor +class BatchLogRecordProcessorConfiguration : public LogRecordProcessorConfiguration +{ +public: + void Accept(LogRecordProcessorConfigurationVisitor *visitor) const override + { + visitor->VisitBatch(this); + } + + std::size_t schedule_delay{0}; + std::size_t export_timeout{0}; + std::size_t max_queue_size{0}; + std::size_t max_export_batch_size{0}; + std::unique_ptr exporter; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/console_log_record_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/console_log_record_exporter_configuration.h new file mode 100644 index 0000000000..89bd2b0893 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/console_log_record_exporter_configuration.h @@ -0,0 +1,29 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/common.json +// YAML-NODE: Console +class ConsoleLogRecordExporterConfiguration : public LogRecordExporterConfiguration +{ +public: + void Accept(LogRecordExporterConfigurationVisitor *visitor) const override + { + visitor->VisitConsole(this); + } +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/log_record_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/log_record_exporter_configuration.h new file mode 100644 index 0000000000..9eed3ee62f --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/log_record_exporter_configuration.h @@ -0,0 +1,32 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ +class LogRecordExporterConfigurationVisitor; + +// YAML-SCHEMA: schema/logger_provider.json +// YAML-NODE: LogRecordExporter +class LogRecordExporterConfiguration +{ +public: + LogRecordExporterConfiguration() = default; + LogRecordExporterConfiguration(LogRecordExporterConfiguration &&) = default; + LogRecordExporterConfiguration(const LogRecordExporterConfiguration &) = default; + LogRecordExporterConfiguration &operator=(LogRecordExporterConfiguration &&) = default; + LogRecordExporterConfiguration &operator=(const LogRecordExporterConfiguration &other) = default; + virtual ~LogRecordExporterConfiguration() = default; + + virtual void Accept(LogRecordExporterConfigurationVisitor *visitor) const = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/log_record_exporter_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/log_record_exporter_configuration_visitor.h new file mode 100644 index 0000000000..a8a2878ca5 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/log_record_exporter_configuration_visitor.h @@ -0,0 +1,41 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +class OtlpHttpLogRecordExporterConfiguration; +class OtlpGrpcLogRecordExporterConfiguration; +class OtlpFileLogRecordExporterConfiguration; +class ConsoleLogRecordExporterConfiguration; +class ExtensionLogRecordExporterConfiguration; + +class LogRecordExporterConfigurationVisitor +{ +public: + LogRecordExporterConfigurationVisitor() = default; + LogRecordExporterConfigurationVisitor(LogRecordExporterConfigurationVisitor &&) = default; + LogRecordExporterConfigurationVisitor(const LogRecordExporterConfigurationVisitor &) = default; + LogRecordExporterConfigurationVisitor &operator=(LogRecordExporterConfigurationVisitor &&) = + default; + LogRecordExporterConfigurationVisitor &operator=( + const LogRecordExporterConfigurationVisitor &other) = default; + virtual ~LogRecordExporterConfigurationVisitor() = default; + + virtual void VisitOtlpHttp(const OtlpHttpLogRecordExporterConfiguration *model) = 0; + virtual void VisitOtlpGrpc(const OtlpGrpcLogRecordExporterConfiguration *model) = 0; + virtual void VisitOtlpFile(const OtlpFileLogRecordExporterConfiguration *model) = 0; + virtual void VisitConsole(const ConsoleLogRecordExporterConfiguration *model) = 0; + virtual void VisitExtension(const ExtensionLogRecordExporterConfiguration *model) = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/log_record_limits_configuration.h b/sdk/include/opentelemetry/sdk/configuration/log_record_limits_configuration.h new file mode 100644 index 0000000000..81ab1383be --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/log_record_limits_configuration.h @@ -0,0 +1,25 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/logger_provider.json +// YAML-NODE: LogRecordLimits +class LogRecordLimitsConfiguration +{ +public: + std::size_t attribute_value_length_limit; + std::size_t attribute_count_limit; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/log_record_processor_configuration.h b/sdk/include/opentelemetry/sdk/configuration/log_record_processor_configuration.h new file mode 100644 index 0000000000..916995367a --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/log_record_processor_configuration.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ +class LogRecordProcessorConfigurationVisitor; + +// YAML-SCHEMA: schema/logger_provider.json +// YAML-NODE: LogRecordProcessor +class LogRecordProcessorConfiguration +{ +public: + LogRecordProcessorConfiguration() = default; + LogRecordProcessorConfiguration(LogRecordProcessorConfiguration &&) = default; + LogRecordProcessorConfiguration(const LogRecordProcessorConfiguration &) = default; + LogRecordProcessorConfiguration &operator=(LogRecordProcessorConfiguration &&) = default; + LogRecordProcessorConfiguration &operator=(const LogRecordProcessorConfiguration &other) = + default; + virtual ~LogRecordProcessorConfiguration() = default; + + virtual void Accept(LogRecordProcessorConfigurationVisitor *visitor) const = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/log_record_processor_configuration_visitor.h b/sdk/include/opentelemetry/sdk/configuration/log_record_processor_configuration_visitor.h new file mode 100644 index 0000000000..ac4dd52d23 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/log_record_processor_configuration_visitor.h @@ -0,0 +1,37 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +class BatchLogRecordProcessorConfiguration; +class SimpleLogRecordProcessorConfiguration; +class ExtensionLogRecordProcessorConfiguration; + +class LogRecordProcessorConfigurationVisitor +{ +public: + LogRecordProcessorConfigurationVisitor() = default; + LogRecordProcessorConfigurationVisitor(LogRecordProcessorConfigurationVisitor &&) = default; + LogRecordProcessorConfigurationVisitor(const LogRecordProcessorConfigurationVisitor &) = default; + LogRecordProcessorConfigurationVisitor &operator=(LogRecordProcessorConfigurationVisitor &&) = + default; + LogRecordProcessorConfigurationVisitor &operator=( + const LogRecordProcessorConfigurationVisitor &other) = default; + virtual ~LogRecordProcessorConfigurationVisitor() = default; + + virtual void VisitBatch(const BatchLogRecordProcessorConfiguration *model) = 0; + virtual void VisitSimple(const SimpleLogRecordProcessorConfiguration *model) = 0; + virtual void VisitExtension(const ExtensionLogRecordProcessorConfiguration *model) = 0; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/logger_provider_configuration.h b/sdk/include/opentelemetry/sdk/configuration/logger_provider_configuration.h new file mode 100644 index 0000000000..8debcaac49 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/logger_provider_configuration.h @@ -0,0 +1,31 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/log_record_limits_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_processor_configuration.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/logger_provider.json +// YAML-NODE: LoggerProvider +class LoggerProviderConfiguration +{ +public: + std::vector> processors; + std::unique_ptr limits; + // FIXME: logger_configurator +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/otlp_file_log_record_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/otlp_file_log_record_exporter_configuration.h new file mode 100644 index 0000000000..ca836a1079 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_file_log_record_exporter_configuration.h @@ -0,0 +1,33 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/common.json +// YAML-NODE: ExperimentalOtlpFileExporter +class OtlpFileLogRecordExporterConfiguration : public LogRecordExporterConfiguration +{ +public: + void Accept(LogRecordExporterConfigurationVisitor *visitor) const override + { + visitor->VisitOtlpFile(this); + } + + std::string output_stream; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h new file mode 100644 index 0000000000..c8078cbcaf --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h @@ -0,0 +1,43 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/headers_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/common.json +// YAML-NODE: Otlp +class OtlpGrpcLogRecordExporterConfiguration : public LogRecordExporterConfiguration +{ +public: + void Accept(LogRecordExporterConfigurationVisitor *visitor) const override + { + visitor->VisitOtlpGrpc(this); + } + + std::string endpoint; + std::string certificate_file; + std::string client_key_file; + std::string client_certificate_file; + std::unique_ptr headers; + std::string headers_list; + std::string compression; + std::size_t timeout{0}; + bool insecure{false}; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h b/sdk/include/opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h new file mode 100644 index 0000000000..0ff65ec077 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h @@ -0,0 +1,44 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include +#include + +#include "opentelemetry/sdk/configuration/headers_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration_visitor.h" +#include "opentelemetry/sdk/configuration/otlp_http_encoding.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/common.json +// YAML-NODE: OtlpHttpExporter +class OtlpHttpLogRecordExporterConfiguration : public LogRecordExporterConfiguration +{ +public: + void Accept(LogRecordExporterConfigurationVisitor *visitor) const override + { + visitor->VisitOtlpHttp(this); + } + + std::string endpoint; + std::string certificate_file; + std::string client_key_file; + std::string client_certificate_file; + std::unique_ptr headers; + std::string headers_list; + std::string compression; + std::size_t timeout{0}; + enum_otlp_http_encoding encoding{protobuf}; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/include/opentelemetry/sdk/configuration/simple_log_record_processor_configuration.h b/sdk/include/opentelemetry/sdk/configuration/simple_log_record_processor_configuration.h new file mode 100644 index 0000000000..67acd8a813 --- /dev/null +++ b/sdk/include/opentelemetry/sdk/configuration/simple_log_record_processor_configuration.h @@ -0,0 +1,34 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +#include "opentelemetry/sdk/configuration/log_record_exporter_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_processor_configuration.h" +#include "opentelemetry/sdk/configuration/log_record_processor_configuration_visitor.h" +#include "opentelemetry/version.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace configuration +{ + +// YAML-SCHEMA: schema/logger_provider.json +// YAML-NODE: SimpleLogRecordProcessor +class SimpleLogRecordProcessorConfiguration : public LogRecordProcessorConfiguration +{ +public: + void Accept(LogRecordProcessorConfigurationVisitor *visitor) const override + { + visitor->VisitSimple(this); + } + + std::unique_ptr exporter; +}; + +} // namespace configuration +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE