我有多个部署在 tomcast 服务器上的网络应用。
在我的网络应用程序的一个 log4j.properties 中,我添加了以下 Socket HUB appender,以便将日志发送到该套接字。
log4j.appender.SOCKET=org.apache.log4j.net.SocketHubAppender
log4j.appender.SOCKET.port=9999
log4j.appender.SOCKET.locationInfo=true
一切都部署得很好。
我的第二个应用程序的 log4j.properties 也有相同的附加程序。
log4j.appender.SOCKET=org.apache.log4j.net.SocketHubAppender
log4j.appender.SOCKET.port=9999
log4j.appender.SOCKET.locationInfo=true
现在,如果我尝试将第二个 Web 应用程序添加到已包含第一个 Web 应用程序的 Tomcat 服务器,它会在日志中抛出“端口已在使用”错误。
但是,如果我将第二个应用程序的端口更改为 9998,则在日志中看不到任何错误。 Afaik,这里提到的端口是接收方的端口,因此如果多个应用程序使用相同的接收方端口应该没有问题。
或者我应该在 Tomcat 的 log4j.properties 中配置这个附加程序,而不是在部署在其中的每个应用程序中配置。
高级感谢
最佳答案
SocketHubAppender
在这里充当 TCP 服务器并开始监听给定的本地主机端口。日志查看器(Apache Chainsaw、OstrosLogViewer...)连接到此端口并从中接收/拉取数据。
SocketAppender
,另一方面,充当 TCP 客户端,连接到给定的远程服务器:端口并将数据发送/推送到。
关于java - 将 SocketHubAppender 用于部署在 Tomcat 中的 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403442/