如何在调试模式中存储通过运行水槽生成的水槽日志?

时间:2014-03-10 12:23:41

标签: flume

当我使用命令运行水槽时:

bin / flume-ng agent --conf conf --conf-file flume.conf --name agentName -Dflume.root.logger = INFO,console

它会在控制台上列出所有日志数据。我想将所有这些日志数据(水槽的日志数据)存储在一个文件中。我该怎么做?

2 个答案:

答案 0 :(得分:0)

您需要使用log4j2进行Flume的自定义构建。 您将log4j2配置为使用滚动文件追加器,该转储器每分钟(或您想要的任何延迟)滚动到假脱机目录。 您将Flume配置为对该假脱机目录使用SpoolingDirectorySource

您无法使用直接Flume appender(例如log4j2中的内容)来记录Flume,因为您将陷入僵局。 您不能将log4j1与滚动文件appender一起使用,因为它具有并发缺陷,这意味着它可能会将新消息写入旧文件,然后SpoolingDirectorySource将失败。

我无法记住是否通过此设置尝试了Flume的Log4j appender。该appender没有很多方法来配置它,我认为如果您尝试与之交谈的后续代理已关闭,这将导致您出现问题。

另一种方法可能是修补log4j1并修复该并发缺陷(需要进行变量volatile

(是的,设置它有点令人沮丧!)

答案 1 :(得分:0)

不要使用-Dflume.root.logger = INFO,控制台运行,然后flume将登录./logs