使用log4j socketappender的logstash不起作用

时间:2014-11-04 05:24:40

标签: log4j logstash

我正在尝试通过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

2 个答案:

答案 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.2log4j-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。