【发布时间】:2012-08-08 11:09:55
【问题描述】:
我正在尝试将日志记录组件添加到分布式系统。它是用AspectJ 编写的,以避免链接当前的源代码。我使用 socket appender 发送日志,但我想尝试一些更有效的方法。
我听说我应该使用JMSAppender 和AsyncAppender,但我没有配置它。我应该创建Receiver 来收集日志并将它们传递到数据库和GUI(我使用ChainSaw)吗?
我尝试关注 turorial1 和 tutorial2 ,但它们还不够清楚。
编辑:
在我准备的一个小型演示中,我为一个请求发送了 6 个日志(模拟 3 个组件)
[2012-08-08 15:40:28,957] [request1344433228957] [Component_A] [start]
[2012-08-08 15:40:32,050] [request1344433228957] [Component_B] [start]
[2012-08-08 15:40:32,113] [request1344433228957] [Component_C] [start]
[2012-08-08 15:40:32,113] [request1344433228957] [Component_C] [end - throwing]
[2012-08-08 15:40:32,144] [request1344433228957] [Component_B] [end]
[2012-08-08 15:40:32,175] [request1344433228957] [Component_A] [end]
使用套接字 Appender。所以我的 log4j.properties 是:
log4j.rootLogger=DEBUG, server
log4j.appender.server=org.apache.log4j.net.SocketAppender
log4j.appender.server.Port=4712
log4j.appender.server.RemoteHost=localhost
log4j.appender.server.ReconnectionDelay=1000
所以我跑
>java -classpath log4j-1.2.17.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties
有配置
log4j.rootLogger=DEBUG, CA, FA
#
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=[%d] [%t] [%c] [%m]%n
#
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=report.log
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern=[%d] [%t] [%c] [%m]%n
然后我将日志从文件发送到 Chainsaw:
这绝对是基本的,但我想学习如何做得更好。首先,我想异步发送日志。然后创建非常简单的接收器,例如可以将日志传递到文件。
我尝试按照上面列出的教程进行操作,但失败了。所以问题是:你能提供一些示例配置吗? Receiver.java 和 log4.properties 文件的示例?
【问题讨论】:
标签: java logging log4j apache-chainsaw