我正在尝试通过log4j套接字appender流式传输我的日志,并尝试通过logstash log4j输入插件检索它。我的logstash配置看起来像
input {
log4j
{
type=>"socketlogs"
port=>"1995"
}
}
output {
stdout {}
file
{ path=>"socket.log"}
}
我的log4j.xml如下所示
<appender name="logstashsocketappender" class="org.apache.log4j.net.SocketAppender">
<param name="RemoteHost" value=<logstash ip>/>
<param name="Port" value="1995"/>
<param name="ReconnectionDelay" value="60000"/>
<param name="Threshold" value="INFO"/>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="logstashsocketappender"/>
</root>
我在测试代码中有一个logger.info语句,但是我没有在logstash机器中的stdout中看到这些语句。这些是我正在使用的软件版本
logstash - 1.4.2 log4j - 1.7.5
如果我在这里遗漏了一些东西,请告诉我。
感谢您的帮助 Gowri
答案 0 :(得分:2)
您是否尝试过使用GELF? log4j内部使用TCP。 GELF使用UDP,因此它不会降低您的应用程序速度。
<强> logstash.conf 强>
input {
gelf {
port => 12201
}
}
<强>的log4j.xml 强>
<appender name="gelf" class="biz.paluch.logging.gelf.log4j.GelfLogAppender">
<param name="Threshold" value="INFO" />
<param name="Host" value="udp:localhost" />
<param name="Port" value="12201" />
</appender>
有关更多文档,请参阅https://github.com/mp911de/logstash-gelf。
答案 1 :(得分:0)
我使用logstash-1.4.2
和log4j-1.2.17
面临类似的问题:只有部分记录的消息到达logstash。如果我记录10条消息,只有5到10条消息到达logstash。我发布消息的时间越长(成串)消息越多。 (经过一些迭代后,所有10条消息都会到达) - 也许在启动时会出现一些丢失某些消息的问题?
也许您也尝试记录一些消息,以划定问题...
如果这是一个配置错误,您将在log4j:ERROR Could not connect to remote log4j server at [localhost]. We will try again later.
在客户端(发件人)获得stderr
。
它似乎是一个性能问题:如果我在一堆消息之间等待100毫秒,所有消息都会到达logstash。