我有一个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并将事件推送给它?
指导,简单教程链接或替代工具都欢迎。
答案 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>