Простой пример сбоя экспортера журнала GRPC в emirecord ()C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Простой пример сбоя экспортера журнала GRPC в emirecord ()

Сообщение Anonymous »

У меня есть проблемы с составлением примера экспортера в пакетном экспортере журнала GRPC под Ubuntu 22, и я надеюсь получить некоторую помощь, указывающую на то, что не так в коде.cmake -DBUILD_TESTING=OFF -DWITH_EXAMPLES=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=ON -DWITH_OTLP_HTTP=ON -DWITH_OTLP_GRPC=ON -DWITH_ABI_VERSION_1=OFF -DWITH_ABI_VERSION_2=ON -DWITH_STL=CXX17 -DCMAKE_CXX_STANDARD=17 ..
< /code>
Программа тестирования: < /p>
#include
#include
#include

#include "opentelemetry/sdk/logs/batch_log_record_processor.h"
#include "opentelemetry/sdk/logs/logger_provider_factory.h"
#include "opentelemetry/sdk/logs/logger_provider.h"
#include "opentelemetry/logs/provider.h"
#include "opentelemetry/sdk/version/version.h"
#include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_factory.h"

namespace api_logs = opentelemetry::logs;
namespace common = opentelemetry::common;
namespace otlp = opentelemetry::exporter::otlp;
namespace sdk_logs = opentelemetry::sdk::logs;

int main()
{
// exporter
otlp::OtlpGrpcLogRecordExporterOptions logger_opts_grpc;
logger_opts_grpc.endpoint = "localhost:4317"; // set collector endpoint
logger_opts_grpc.use_ssl_credentials = false; // true if TLS required

// processor
opentelemetry::sdk::logs::BatchLogRecordProcessorOptions batch_options;
batch_options.max_queue_size = 2048; // default: 2048
batch_options.schedule_delay_millis = std::chrono::milliseconds(500); // delay before forcing a flush
batch_options.max_export_batch_size = 512; // max logs per export

// build grpc log exporter, batch processor and provider
auto exporter = otlp::OtlpGrpcLogRecordExporterFactory::Create(logger_opts_grpc);
auto processor = std::make_unique(std::move(exporter), batch_options);

auto sdk_provider = sdk_logs::LoggerProviderFactory::Create(std::move(processor));
auto shared_provider = std::shared_ptr(std::move(sdk_provider));

// upcast shared_ptr to shared_ptr
std::shared_ptr provider = std::static_pointer_cast(shared_provider);

api_logs::Provider::SetLoggerProvider(provider);

// check
auto global_provider = api_logs::Provider::GetLoggerProvider();
std::cout
Ошибка призвана к Emitlogger; Это не нравится запись, которую я передаю: < /p>
In file included from /home/mandrews/downloads/github/opentelemetry-cpp/sdk/include/opentelemetry/sdk/logs/logger_provider.h:12,
from /home/mandrews/downloads/github/opentelemetry-cpp/sdk/include/opentelemetry/sdk/logs/logger_provider_factory.h:10,
from otel_test.cpp:6:
/home/mandrews/downloads/github/opentelemetry-cpp/api/include/opentelemetry/logs/logger.h: In instantiation of ‘void opentelemetry::v2::logs::Logger::EmitLogRecord(opentelemetry::v2::nostd::unique_ptr&&, ArgumentType&& ...) [with ArgumentType = {main()::}; opentelemetry::v2::nostd::unique_ptr = std::unique_ptr]’:
/home/mandrews/downloads/github/opentelemetry-cpp/api/include/opentelemetry/logs/logger.h:118:18: required from ‘void opentelemetry::v2::logs::Logger::EmitLogRecord(ArgumentType&& ...) [with ArgumentType = {main()::}]’
otel_test.cpp:53:23: required from here
/home/mandrews/downloads/github/opentelemetry-cpp/api/include/opentelemetry/logs/logger.h:88:98: error: no matching function for call to ‘opentelemetry::v2::logs::detail::LogRecordSetterTrait::Set(std::unique_ptr::pointer, main()::)’
88 | IgnoreTraitResult((detail::LogRecordSetterTrait::Set(
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
89 | log_record.get(), std::forward(args)),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
< /code>
Это было закодировано в основном следуя фрагментам, которые я нашел в документах и в Интернете, и мне неясно, что я делаю не так. Тот же код компилизируется под VS2022, но с большим количеством предупреждений об emiterecord ()


Подробнее здесь: https://stackoverflow.com/questions/797 ... emitrecord
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»