配置metaq扩展log4j发送消息的坑

为什么要配置log4j发送消息呢?主要是将现在系统的日志都集中管理,而不是分散在各个系统中,对于分布式系统更是如此。但是始终测试不成功现在回想一下不成功,主要的原因就是对于每个组件不熟悉不理解其原理。
坑1:zookeeper没有配置myid
下载的zookeeper 压缩包,在win7下解压了之后,不作任何配置好像就能启动,
启动metaq也可以连上,但是客户端通过zookeeper连接metaq不可以,一直就是连不上.
所以这一步,一定要正确的配置zookeeper,即是单机运行zookeeper也要配置myid。
坑2:metaq的正解启动
在win7下启动metaq之后,一定在验证其是否正确的启动,比如telnet 8123端品运行stats测试一下。
坑3:log4j的配置
官网所给的关于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
 代码使用示例:
 static final Log log = LogFactory.getLog("testLog");
log.info("just a test");
而一般情况下,所使用的代码为
static final Log log=LogFactory.getLog(Test.class);
的形式,如果使用metaq来将系统异常日志作为消息发送出去,
那么需要重构的代码则太多了。其实我们只需要更改log4j的配置就可以了,我测试成功的log4j配置。
log4j.rootLogger=DEBUG,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %d [%t] %c: %m%n

log4j.logger.com.j1=info,testMessage
log4j.additivity.testMessage=false
log4j.appender.testMessage=com.taobao.metamorphosis.client.extension.log4j.DailyRollingFileStreamAppender
log4j.appender.testMessage.topic=test
log4j.appender.testMessage.zkConnect=127.0.0.1:2181
log4j.appender.testMessage.EncodeType=0
log4j.appender.testMessage.BufferedIO=false
log4j.appender.testMessage.DatePattern='.'yyyy-MM-dd_HH
log4j.appender.testMessage.File=d:/logs/test.log
log4j.appender.testMessage.layout=org.apache.log4j.PatternLayout
log4j.appender.testMessage.layout.ConversionPattern=%d{MM-dd HH:mm:ss} - %m%n
log4j.appender.testMessage.Append=true

还要一点就是不能将testMessage放在rootLogger上,因为这样代码会报stack异常,但是我没有搞清楚原因。即进行如何配置不可以:
log4j.rootLogger=DEBUG,console,testMessage
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %d [%t] %c: %m%n

log4j.appender.testMessage=com.taobao.metamorphosis.client.extension.log4j.DailyRollingFileStreamAppender
log4j.appender.testMessage.topic=test
log4j.appender.testMessage.zkConnect=127.0.0.1:2181
log4j.appender.testMessage.EncodeType=0
log4j.appender.testMessage.BufferedIO=false
log4j.appender.testMessage.DatePattern='.'yyyy-MM-dd_HH
log4j.appender.testMessage.File=d:/logs/test.log
log4j.appender.testMessage.layout=org.apache.log4j.PatternLayout
log4j.appender.testMessage.layout.ConversionPattern=%d{MM-dd HH:mm:ss} - %m%n
log4j.appender.testMessage.Append=true
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值