Java 日志存储来自docker容器的syslog输入

Java 日志存储来自docker容器的syslog输入,java,log4j,docker,logstash,syslog,Java,Log4j,Docker,Logstash,Syslog,我有一个java应用程序在docker主机上的docker容器中运行。应用程序使用log4j进行日志记录,并将日志记录到syslog。我希望能够将我的系统日志发送到logstash 我将rsyslog配置文件中的配置更改为: *.* @@<logstash host ip>:514 } 在logstash日志中,我得到了错误消息,说syslog tcp listener死了 exception=>#<Errno::EACCES: Permission denied -

我有一个java应用程序在docker主机上的docker容器中运行。应用程序使用log4j进行日志记录,并将日志记录到syslog。我希望能够将我的系统日志发送到logstash

我将rsyslog配置文件中的配置更改为:

*.* @@<logstash host ip>:514 
}

在logstash日志中,我得到了错误消息,说syslog tcp listener死了

exception=>#<Errno::EACCES: Permission denied - bind(2)

exception=>#您需要以root用户身份运行该进程。正常用户(即非root用户)如果没有一些setuid技巧,就无法绑定到小于1024的端口

我无法帮助您将Docker连接到主机的日志库,但EACCES错误的原因是默认情况下只有root用户可以绑定到1024以下的端口。更改端口,以root用户身份运行Logstash,或者在上查看其他选项。我尝试过这样做,但它显示不允许操作。位于/etc/init.d中的logstash服务是一个脚本。。。所以我想我不能使用这个解决方案。我无法以root用户身份运行logstash,因此我想我必须更改端口。请注意,在syslog上记录java应用程序可能会由于syslog消息上的1024字节限制而导致问题,异常通常会超过这一限制。
exception=>#<Errno::EACCES: Permission denied - bind(2)