logging — C ++: Как использовать SocketAppender из log4cplus для отправки журналов на сервер logstash?

Я пытаюсь отправить журналы моего приложения C ++ в logstash с помощью библиотеки log4cplus.
Я прочитал документацию log4cplus и использовал приведенные ниже конфигурации для настройки SocketAppender.

log4cplus.rootLogger=INFO, SA
log4cplus.appender.SA=log4cplus::SocketAppender
log4cplus.appender.SA.port=5044
log4cplus.appender.SA.host=127.0.0.1
log4cplus.appender.SA.serverName=MyServer
log4cplus.appender.SA.layout=log4cplus::PatternLayout
log4cplus.appender.SA.layout.ConversionPattern=%m%n

В коде я инициализировал регистратор и попытался отправить сообщение регистратору.

PropertyConfigurator config(configFile);
config.configure();
std::string msg = "test msg";
Logger root = Logger::getRoot();
LOG4CPLUS_INFO(root,msg);

Но я не получал ожидаемое сообщение на сервере logstash. Я получил некоторые данные мусора, как показано ниже.

{
«@version» => «1»,
«host» => «localhost»,
«message» => «\ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u004 \ u0000 \ u0000 \ u0000N
\ U0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ BTEST
сообщ \ u0000 \ u0000 \ u0000 \ u000F140382836238144Z {\ u0014N \ u0000 \ u0004 \ u0003 \ xC0 \ u0000 \ u0000 \ u0000 \ u0013 ../ SRC / property.cpp \ u0000 \ u0000 \ u00002 \ u0000 \ u0000 \ u0000 \ u0015int
main (int, char **) «,
«@timestamp» => 2018-02-07T14: 59: 26.284Z,
«порт» => 47148}

Я прочитал документацию log4cplus и попробовал несколько изменений конфигурации, но ничего не получалось. Я мог бы отправить журнал на сервер logstash с помощью команды netcat. По крайней мере, я уверен, что мои настройки logstash верны. Я настроил logstash с файлом conf ниже.

input {
tcp {
port => 5044
}
}

filter{
}

output {
stdout {
codec => rubydebug
}
}

Может кто-нибудь сказать мне, что я делаю не так с log4cplus? Можно ли использовать log4cplus для отправки журналов на сервер logstash?

1

Решение

log4cplus::SocketAppender специфично для Log4cplus. Если вы хотите войти в Logstash, вам нужно будет создать свой собственный аппендир для этого.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]