我有几个使用log4j的java应用程序,它们可能在同一台主机上,也可能不在同一台主机上。
我已经成功地将flume和log4j配置为每天保存一个文件,但是如何让flume根据主机名和应用程序名创建单独的目录呢?
这是我的Flumelog4j附录:
<Flume name="flumeLogger" compress="false" batchSize="1" type="persistent" dataDir="logs/flume">
<Agent host="myhost" port="41414"/>
<PatternLayout pattern="@@@@ %d{ISO8601} %p ${env:COMPUTERNAME} my-app %c %m @@@@"/>
</Flume>
这是我的Flume配置:
agent1.sinks.hdfs-sink1.type = hdfs
agent1.sinks.hdfs-sink1.hdfs.path = hdfs://localhost:9000/logs/%{host}
agent1.sinks.hdfs-sink1.hdfs.filePrefix = %y-%m-%d
agent1.sinks.hdfs-sink1.hdfs.round = true
agent1.sinks.hdfs-sink1.hdfs.roundValue = 1
rgent1.sinks.hdfs-sink1.hdfs.roundUnit = day
agent1.sinks.hdfs-sink1.hdfs.rollInterval = 0
agent1.sinks.hdfs-sink1.hdfs.rollFile = 0
agent1.sinks.hdfs-sink1.hdfs.rollSize = 0
agent1.sinks.hdfs-sink1.hdfs.rollCount = 0
agent1.sinks.hdfs-sink1.hdfs.writeFormat = Text
agent1.sinks.hdfs-sink1.hdfs.fileType = DataStream
agent1.sinks.hdfs-sink1.hdfs.batchSize = 1
agent1.sinks.hdfs-sink1.hdfs.useLocalTimeStamp = true
agent1.channels = ch1
agent1.sources = avro-source1
agent1.sinks = hdfs-sink1
agent1.sinks.hdfs-sink1.channel = ch1
agent1.sources.avro-source1.channels = ch1
根据文件:
%{host}:替换名为“host”的事件头的值。支持任意标头名称。
但是我所有的日志都是用 /logs
而不是 /logs/myhost
如图纸所示 hdfs.path
财产。
另外,我如何定义 arbitrary header names
在log4j appender里?
暂无答案!
目前还没有任何答案,快来回答吧!