我尝试使用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服务器上获得预期的消息。我得到了一些垃圾数据,如下所示。
{ " @版本" => " 1&#34 ;, "主机" => "本地主机&#34 ;, "消息" => " \ 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 **)", " @时间戳" => 2018-02-07T14:59:26.284Z, "端口" => 47148}
我已经阅读了log4cplus的文档并尝试了几个配置更改,但没有任何效果。我可以使用netcat命令将日志发送到logstash服务器。所以至少我确保我的logstash配置是正确的。我已使用下面的conf文件配置了logstash。
input {
tcp {
port => 5044
}
}
filter{
}
output {
stdout {
codec => rubydebug
}
}
有谁能告诉我我对log4cplus做错了什么?是否可以使用log4cplus将日志发送到logstash服务器?
答案 0 :(得分:0)
log4cplus::SocketAppender
特定于Log4cplus。如果你想登录Logstash,你必须创建自己的appender才能做到这一点。