使用Log4j2进行远程日志记录

时间:2017-12-11 11:34:24

标签: sockets log4j2

所以我有将此活动记录到文件的任务,但必须完成 远程服务器端远程登录。

  

注意:远程日志记录必须是最新版本的 Log4j2(2.10)

我的任务很简单

  1. 将记录信息发送到端口。
  2. 将信息从端口记录到文件。
  3. 我的发现

    1. 存在套接字Appender,它有助于将信息发送到端口。就是这样,你不需要创建客户端代码或任何东西。
    2. log4j2.properties中的套接字appender配置

      appender.socket.type = Socket
      appender.socket.name= Socket_Appender
      appender.socket.host = "IP address"
      appender.socket.port = 8101
      appender.socket.layout.type = SerializedLayout
      appender.socket.connectTimeoutMillis = 2000
      appender.socket.reconnectionDelayMillis = 1000
      appender.socket.protocol = TCP
      

      改编自here。但这也是log4j 1.x改编。

      1. 我发现在log4j 2.6监听端口之前我们使用了TcpSocketServer,它使用LogEventBridge This helped reach that conclusion启动了一个服务器。这个类在core.net.server中不再可用。假设它不再使用,并且是唯一类似/最接近的类,TcpSocketManager.Other链接有帮助。 How to use SocketAppend?
      2. 然后我尝试了这个

        public static final Logger LOG=LogManager.getLogger(myapp.class.getName());
        
        main(){
        LOG.debug("DEBUG LEVEL");
        }
        
      3. 并收到以下错误

          

        主ERROR TcpSocketManager(TCP:IPAddress:8111)捕获异常   并将继续:java.net.SocketTimeoutException:connect timed out

        我知道这项工作,因为我把它读到套接字但是没有人听,但不知怎的,我搞砸了很长时间并且代码有了变化。

        我需要帮助如何继续。提前谢谢

1 个答案:

答案 0 :(得分:4)

远程接收日志事件的套接字服务器已移至单独的存储库:https://github.com/apache/logging-log4j-tools

这仍然需要发布。