как включить либрдкафку для отправки логов в системный журнал - PullRequest
0 голосов
/ 14 декабря 2018

Я проверил документацию по librdkafka и там указано, что set_log_cb может использоваться для включения системного журнала для librdkafka "Журналы регистрируются через log_cb, который по умолчанию записывается в stderr, также есть встроенный модуль записи syslog, который вы можете настроить с помощью set_log_cb (). ".Я не могу найти, как именно это сделать.

std::unique_ptr<RdKafka::Conf> conf(RdKafka::Conf::create(RdKafka::Conf::CONF_GLOBAL));
std::unique_ptr<RdKafka::Conf> tconf(RdKafka::Conf::create(RdKafka::Conf::CONF_TOPIC));


conf->set("metadata.broker.list", brokers, errstr);
conf->set("bootstrap.servers", brokers, errstr);

// Set a termination signal which should make shutdown faster
char tmp[16];
snprintf(tmp, sizeof(tmp), "%i", SIGKILL);
conf->set("internal.termination.signal", tmp, errstr);

conf->set("topic.metadata.refresh.interval.ms","3000", errstr);
conf->set("default_topic_conf", tconf.get(), errstr);

conf->set("debug", "all", errstr);

Почему мне нужна регистрация.Если вы видите вышеупомянутую конфигурацию, я использую сигнал завершения, чтобы остановить потоки kafka, но кое-что, как это не работает, и мой процесс застревает в вызове функции ниже и в конечном счете убивается.

if (thrd_join(thrd, NULL) != thrd_success)
            rd_kafka_log(rk, LOG_ERR, "DESTROY",
                         "Failed to join main thread: %s "
                         "(was process forked?)",
                         rd_strerror(errno));

, если бы я мог включитьsyslogging я мог видеть, что происходит, и отлаживать его дальше.Ваша помощь приветствуется.

...