使用apache flume收集logg4j日志

时间:2014-12-11 15:51:02

标签: flume

人  我遇到了一个问题。我使用logg4j和apache-flume来收集logs.the架构使用logg4j远程打印,配置如下:

log4j.appender.flume=org.apache.flume.clients.log4jappender.Log4jAppender
  log4j.appender.flume.Hostname=192.168.152.49
  log4j.appender.flume.Port=44446
  log4j.appender.flume.layout=org.apache.log4j.PatternLayout

虽然配置水槽像这样:

 a1.sources.r1.type=avro
 a1.sources.r1.bind=192.168.152.49
 a1.sources.r1.port=44446

它有效!但问题是当水槽关闭时。使用logg4j的应用程序无法打印日志!所以任何人都可以告诉我。  如何解决这个问题

1 个答案:

答案 0 :(得分:0)

这取决于你想要如何处理Flume的问题。使用常规Log4jAppender,您可以启用unsafe模式,该模式将在log4j LogLog中记录错误,但是否则会以静默方式失败。为此,您可以设置log4j.appender.flume.UnsafeMode = true。你可以在这里看到一个例子:

https://github.com/kite-sdk/kite-examples/blob/master/logging/src/main/resources/log4j.properties#L20

启用不安全功能后,您在Flume关闭时记录的所有事件都将丢失。

如果您希望能够指向多个Flume代理并让它平衡它们之间的负载以及如果其中一个发生故障时进行故障转移,则可以使用LoadBalancingLog4jAppender。这里的文档应该有所帮助:

http://flume.apache.org/FlumeUserGuide.html#load-balancing-log4j-appender