Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使Log4J SocketAppender工作_Java_Log4j_Logstash - Fatal编程技术网

Java 无法使Log4J SocketAppender工作

Java 无法使Log4J SocketAppender工作,java,log4j,logstash,Java,Log4j,Logstash,我的Java项目使用Log4J2。目前,它正在成功地将日志写入文件。现在,我正试图通过套接字追加器将日志推送到LogStash。不幸的是,我的这些努力没有取得任何成功。现在,我看两部分:log4j2.xml文件和logstash配置文件。我在这里提供了这两个选项,希望有人能帮助我确定我的问题 log4j2.xml <Configuration status="WARN" monitorInterval="30"> <Appenders> <Socket

我的Java项目使用Log4J2。目前,它正在成功地将日志写入文件。现在,我正试图通过套接字追加器将日志推送到LogStash。不幸的是,我的这些努力没有取得任何成功。现在,我看两部分:log4j2.xml文件和logstash配置文件。我在这里提供了这两个选项,希望有人能帮助我确定我的问题

log4j2.xml

<Configuration status="WARN" monitorInterval="30">
  <Appenders>
    <Socket name="A1" host="0.0.0.0" port="4560">
      <SerializedLayout/>
    </Socket>

    <RollingRandomAccessFile name="RollingFile" fileName="/logs/server.log"
                             filePattern="/logs/$${date:yyyy-MM}/server-%d{yyyy-MM-dd-HH}-%i.log.gz">
      <JSONLayout complete="false"></JSONLayout>
      <Policies>
        <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
        <SizeBasedTriggeringPolicy size="100 MB"/>
      </Policies>
    </RollingRandomAccessFile>
    <Async name="AsyncFile">
      <AppenderRef ref="RollingFile"/>
    </Async>
  </Appenders>
  <Loggers>
    <Logger name="com.company" level="trace" additivity="false">
      <AppenderRef ref="AsyncFile"/>
    </Logger>
    <Root level="trace">
      <AppenderRef ref="AsyncFile"/>
    </Root>
  </Loggers>
</Configuration>
我使用
logstash-1.4.0/bin/logstash--config/etc/logstash/logstash.conf--debug
从命令行启动logstash。我没有看到任何错误。同时,我没有看到任何写入控制台窗口的日志。我知道日志应该出现,因为它们出现在我的rolling server.log文件中,该文件在log4j中配置为第二个appender


我做错了什么?我已经修补了三天了

我认为您应该在以下行中用您的IP替换
0.0.0

<Socket name="A1" host="0.0.0.0" port="4560">

Logstash中的log4j输入与Log4j2不兼容。Log4j2使用新格式序列化日志数据

但是,有一个插件可以解析Log4j2套接字:

在logstash 1.5+中,可从以下位置安装:

为什么在appender声明中不使用localhost而不是0.0.0.0?0.0.0.0对LogSTASH有效,但我不确定对于Log4J2是否有效。如果您认为给定的答案是有用的,请接受和/或投票表决,以帮助其他有相同问题的人。
<Socket name="A1" host="0.0.0.0" port="4560">
<AppenderRef ref="A1" />
<AppenderRef ref="RollingFile" />