我们正在使用Jboss 7.4.0和两个节点,每个节点都有自己的滚动文件追加器。我们想要做的是将这两个输出重定向到一个唯一的文件中,"外部"两个Jboss节点。我尝试使用SocketAppenders,手动启动Log4J服务器,但它不起作用......
<custom-handler name="SOCKET" class="org.apache.log4j.net.SocketAppender" module="org.apache.log4j">
<level name="DEBUG"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p %X{user} %X{app} [%C:%M:%L] (%t) %s%E%n"/>
</formatter>
<properties>
<property name="Port" value="4712"/>
<property name="RemoteHost" value="127.0.0.1"/>
</properties>
log4j服务器中唯一的东西是:
[2015-04-01 10:31:24,969] [main] [Listening on port 4712]
[2015-04-01 10:31:24,981] [main] [Waiting to accept a new client.]
我已经读过SocketAppender已经存在于Jboss 7+中,但说实话,Jboss文档不完整,缺失或最多不正确。
那么,在没有重新发明轮子的情况下,做到这一点的正确(或最佳)方式是什么? 我们应该使用异步滚动文件追加器吗? 还有其他选择吗?
答案 0 :(得分:1)
按照以下步骤正确使用它可能会解决您的问题..
1&GT;首先创建log4j-server.properties
log4j.rootLogger=DEBUG, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logfile.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n
2 - ;现在在接收方运行以下命令
java -classpath log4j.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties
现在它将侦听端口4712
并将日志存储在您在logfile.log
文件中定义的log4j-server.properties
3&gt;在log4j.xml文件中添加以下appender以将日志发送到具有指定端口的服务器。
<custom-handler name="SOCKET" class="org.apache.log4j.net.SocketAppender" module="org.apache.log4j">
<level name="DEBUG"/>
<properties>
<property name="Port" value="4712"/>
<property name="RemoteHost" value="127.0.0.1"/>
</properties>
请勿在此配置中指定任何格式化程序。
并且不要忘记在SOCKET
root-logger
中添加log4j.xml