如何使用Log4J和Apache Chainsaw远程查看日志事件?

时间:2010-02-19 19:20:21

标签: java logging log4j apache-chainsaw

我有一个Java Web应用程序,当前使用Log4J进行日志记录。我想使用Apache Chainsaw远程查看和解析日志。到目前为止,我无法理解如何设置客户端(Chainsaw客户端)和服务器端(我的webapp中的log4j配置)以成功启用远程日志记录。

这是我到目前为止所尝试的内容。

服务器端log4j config

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true">

   <appender name="myRFA" class="org.apache.log4j.RollingFileAppender">
      <param name="File" value="/logs}/my.log"/>
      <param name="Append" value="false" />
      <param name="MaxFileSize" value="10MB"/>
      <param name="MaxBackupIndex" value="10"/>
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern"
            value="%d{ISO8601} %p - [%X{LoggingId}] - %t - %c - %m%n"/>
      </layout>
   </appender>

   <appender name="SOCKET" class="org.apache.log4j.net.SocketAppender">
      <param name="Port" value="4445"/>
      <param name="RemoteHost" value="localhost"/>
      <param name="ReconnectionDelay" value="60000"/>
      <param name="Threshold" value="DEBUG"/>
   </appender>

   <logger name="com" additivity="false">
      <level value="warn"/>
      <appender-ref ref="myRFA"/>
   </logger>

   <logger name="org" additivity="false">
      <level value="warn"/>
      <appender-ref ref="myRFA"/>
   </logger>

</log4j:configuration>

客户端Chainsaw配置

我创建了一个具有以下属性的新接收器

name=SOCKET
port=4445

我承认我并不真正理解这一切是如何运作的。 Chainsaw是否在远程服务器上进行轮询?远程服务器是否连接到Chainsaw并将事件推送给它?

指导,简单教程链接或替代工具都欢迎。

1 个答案:

答案 0 :(得分:2)

我认为您需要将SOCKET appender添加到每个记录器:

   <logger name="com" additivity="false">
      <level value="warn"/>
      <appender-ref ref="myRFA"/>
      <appender-ref ref="SOCKET"/>
   </logger>

   <logger name="org" additivity="false">
      <level value="warn"/>
      <appender-ref ref="myRFA"/>
      <appender-ref ref="SOCKET"/>
   </logger>