【问题标题】:How can you store the logs of flume- generated by running flume in debug mode- in a file?如何将在调试模式下运行flume生成的flume日志存储在文件中?
【发布时间】:2014-03-27 11:34:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: flume


    【解决方案1】:

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

    你不能使用直接的 Flume appender(比如 log4j2 中的)来记录 Flume,因为你会陷入死锁。 您不能将 log4j1 与滚动文件附加程序一起使用,因为它存在并发缺陷,这意味着它可能会将新消息写入旧文件,然后 SpoolingDirectorySource 会失败。

    我不记得我是否使用这个设置尝试过 Flume 的 Log4j appender。该附加程序没有很多方法可以配置它,我认为如果您尝试与之交谈的后续代理关闭,它将给您带来问题。

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

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

    【讨论】:

      【解决方案2】:

      不要使用 -Dflume.root.logger=INFO,console 运行,然后flume会登录./logs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多