-
Notifications
You must be signed in to change notification settings - Fork 691
使用Log4j扩展发送消息
killme2008 edited this page Mar 8, 2013
·
3 revisions
Metaq还支持log4j发送消息,通过log4j写入的任何日志信息都将以消息的方式发送到Metaq的Broker服务器,只要通过简单的配置就可以。
#依赖
如果要用到log4j扩展,你需要使用client-extenstion的包:
<dependency>
<groupId>com.taobao.metamorphosis</groupId>
<artifactId>metamorphosis-client-extension</artifactId>
<version>1.4.4</version>
</dependency>
#配置log4j.properties
log4j.logger.testLog=info, testMessage
log4j.additivity.testMessage=false
log4j.appender.testMessage=com.taobao.metamorphosis.client.extension.log4j.StreamAppender
log4j.appender.testMessage.topic=meta-test
log4j.appender.testMessage.zkConnect=127.0.0.1:2181
log4j.appender.testMessage.EncodeType=1
log4j.appender.testMessage.BufferedIO=true
log4j.appender.testMessage.DatePattern='.'yyyy-MM-dd_HH
log4j.appender.testMessage.File=../../logs/test.log
log4j.appender.testMessage.layout=org.apache.log4j.PatternLayout
log4j.appender.testMessage.layout.ConversionPattern=%d{MM-dd HH:mm:ss} - %m%n
最重要的三个参数就是`appender、
topic和
zkConnect`,分别指定使用metaq扩展的log4j appender,设定metaq发送消息的topic以及zookeeper的服务器地址列表。其他log4j相关的参数只是为了提供给log4j,防止错误的产生,不会产生作用。
#使用
在Java代码里使用就很简单了:
static final Log log = LogFactory.getLog("testLog");
log.info("just a test");
默认日志将使用Java序列化成byte[]并发送,这可以通过EncodeType
控制,0表示Java序列化,1表示hessian1序列化。