在 2.8 版之后通过套接字进行 log4j2 远程日志记录的正确方法?



我有许多进程在不同的EC2上运行,我想将所有日志发送到我们办公室运行的集中式服务器。 (我正在使用路由追加程序将它们写入单独的日志( 目前接受的通过套接字追加器发送日志并使用 TcpSocketServer 接收日志的方法是什么?

目前,我使用的是 2.8.2 版本的 TcpSocketServer,我在 EC2s 上使用 2.13;EC2 客户端配置如下

<Socket name="socket" host="IP.GOES.HERE" port="7777" connectTimeoutMillis="3000" reconnectionDelayMillis="3000">
<SerializedLayout />
</Socket>

它有效,但我有几个担忧:

  1. 当我重新启动 TcpSocketServer 时,客户端不会重新连接。
  2. 当客户端在连接到服务器时遇到问题时,它会阻止客户端。 我是否需要在套接字周围缠绕一个异步追加器?
  3. 有安全漏洞吗? 为什么删除了 TcpSocketServer,但保留了 Socket 追加器?

TcpSocketServer 是一个示例应用程序。我不建议按原样在生产中使用它。如果不阻止任意连接和/或使用序列化布局,它还会带来安全风险。Json将是一个更好的选择。

套接字追加器将重新连接。使用它的最佳方法是使用主机返回多个 IP 地址的主机的 DNS 名称对其进行配置。如果连接断开,套接字追加器将重新连接到其中任何一个。

您可能需要查看在云中登录以获取其他建议。

最新更新