当我使用命令运行水槽时:
bin / flume-ng agent --conf conf --conf-file flume.conf --name agentName -Dflume.root.logger = INFO,console
它会在控制台上列出所有日志数据。我想将所有这些日志数据(水槽的日志数据)存储在一个文件中。我该怎么做?
答案 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