Search code examples
spring-bootdockerlog4j2connection-refused

Log4j2 socket appender inside a docker container throw connection refused


I have a springboot app running on docker container. In my app there is a log4j.xml file with socket appender.

<Socket name="Socket" host="172.17.0.1" port="5100">
    <JsonLayout compact="true" eventEol="true" />
</Socket>

In my host server (Ubuntu server) its listing port 5100 by logstash. Out put of "netstat -tulpn" command in host is as below.

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8280            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:5100          0.0.0.0:*               LISTEN      -

tcp        0      0 127.0.0.1:5001          0.0.0.0:*               LISTEN      -

But when the springboot server up its getting connection refused error.

2021-07-30 05:20:47,646 main ERROR TcpSocketManager (TCP:172.17.0.1:5100) caught exception and will continue: java.net.ConnectException: Connection refused (Connection refused)
    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)

I tried with "host.docker.internal" also and its not working. Can anyone let me know what is the problem with this please?


Solution

  • As you can see from your netstat output, Logstash is listening on 127.0.0.1:5100 only. That means it cannot be accessed from within Docker. You have to make it listen on 172.17.0.1:5100 or 0.0.0.0:5100.