C++ : How to use SocketAppender of log4cplus to send logs to logstash server?

标签 c++ logging logstash log4cplus

我正在尝试使用 log4cplus 库将我的 C++ 应用程序的日志发送到 logstash。 我已阅读 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\u0000q\u0003\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004root\u0000\u0000N \u0000\u0000\u0000\u0000\u0000\u0000\u0000\btest msg\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, "port" => 47148 }

我已经阅读了 log4cplus 的文档并尝试了一些配置更改,但没有任何效果。我可以使用 netcat 命令将日志发送到 logstash 服务器。所以至少我确定我的 logstash 配置是正确的。我已经使用以下 conf 文件配置了 logstash。

input {
  tcp {
    port => 5044
  }
}

filter{
}

output {
  stdout {
    codec => rubydebug
  }
}

谁能告诉我我在使用 log4cplus 时做错了什么?是否可以使用 log4cplus 将日志发送到 logstash 服务器?

最佳答案

log4cplus::SocketAppender 特定于 Log4cplus。如果您想登录到 Logstash,您将必须创建自己的附加程序来执行此操作。

关于C++ : How to use SocketAppender of log4cplus to send logs to logstash server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48667214/

相关文章:

elasticsearch - json输入文件的logstash问题

filter - logstash filter获取eof时如何返回终端?

c++ - 如何处理 vector 以获得所需的输出?

tomcat - 桌面应用程序和 Tomcat Webapp 中的 log4j2.xml sys vs env

c++ - 在caffe中只编译一层文件

logging - 主管不写更多的日志

java - Android:Log Verbose 在 2.2 上针对新字符串 "byte array"初始化抛出错误

centos - logstash 配置如何工作

c++ - 用于 LLVM 的 GCC 工具链

c++ - 在 C++ 中快速编写许多大文件