2

我有多个 webapps 部署在 tomcast 服务器上。

在我的 webapp 的 log4j.properties 之一中,我添加了以下 Socket HUB 附加程序,以便将日志发送到该套接字。

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 中配置这个附加程序,而不是在每个部署在其中的应用程序中。

高级感谢

4

2 回答 2

8

SocketHubAppender在此处充当 TCP 服务器并开始侦听给定的 localhost 端口。日志查看器(Apache Chainsaw、OstrosLogViewer、...)连接到此端口并从中接收/提取数据。

SocketAppender另一方面,充当 TCP 客户端,连接到给定的远程服务器:端口并向其发送/推送数据。

于 2012-11-28T22:29:50.540 回答
0

SocketHubAppender 的所有可设置属性都在这里(使用 Log4J 1.2.x):

  • Port :集线器打开的端口(等待连接)
  • LocationInfo : 包括位置信息
  • BufferSize :要缓冲的日志事件数(如果是新客户端)
  • 应用程序:应用程序的名称

https://wiki.apache.org/logging-log4j/SocketHubAppender https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketHubAppender.html

<appender name="SOCKET" class="org.apache.log4j.net.SocketHubAppender">
    <param name="Port" value="4560" />
    <param name="LocationInfo" value="true" />
    <param name="BufferSize" value="1000" />
    <param name="Application" value="MyAppName" />
</appender>

请注意,使用 Log4J 2.x,SocketHubAppender 不再存在......至少现在: https ://issues.apache.org/jira/browse/LOG4J2-171

于 2017-05-10T10:52:50.447 回答