对于任何有类似问题的人,我最终在应用程序端删除了 log4j-flume appender,将其替换为 log4j-syslog appender。在水槽端,我配置了 syslogudp 源。
所以最后它看起来像,
在应用程序端 log4j-config
log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
log4j.appender.syslog.Facility=LOCAL7
log4j.appender.syslog.FacilityPrinting=false
log4j.appender.syslog.Header=true
log4j.appender.syslog.SyslogHost=flume1.host.net:41473
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
log4j.appender.syslog.layout.ConversionPattern= DUMMY %p: (%F:%L) %x %m %n
在水槽代理, syslogudp 源
A1.sources.logMR.type = syslogudp
A1.sources.logMR.bind = 0.0.0.0
A1.sources.logMR.port = 41473
所以现在我的水槽事件看起来像,
2015-03-17 08:43:02,658 INFO org.apache.flume.sink.LoggerSink: 事件: { headers:{timestamp=1426682579754, Severity=7, host=apphost1.host.net, Facility=23, log_type=maplogs } 主体:54 4F 46 4C 55 4D 45 20 5B 6D 61 69 6E 2C 5D 20 TOFLUME [主,]}
我现在终于可以使用%{host}访问标头中的主机密钥