Logstash的date过滤器如何匹配时区标识'CET'解析时间字符串
Logstash date过滤器解析CET/CEST时区时间的正确方案
失效根因
你当前配置不生效的核心原因是时间格式模式符使用错误:ZZZ在Joda时间库中用于匹配数值型时区偏移(例如+01:00、-0400这类格式),无法匹配CET/CEST这类时区短名称标识,匹配时区短名称需要使用小写的z模式符。
正确配置
date { match => [ "syslog_timestamp", "EEE MMM dd HH:mm:ss.SSS z yyyy"] locale => "en_US" target => "syslog_timestamp" }
注意事项
- 不需要额外配置
timezone参数:Joda会自动识别字符串中携带的CET/CEST标识完成时区转换,强制指定timezone会覆盖字符串自带的时区信息,反而导致解析结果出现时间偏移。 - 如果存在偶发解析失败的情况,可以新增备用匹配模式,同时兼容不同长度的时区名称写法:
match => [ "syslog_timestamp", "EEE MMM dd HH:mm:ss.SSS z yyyy", "EEE MMM dd HH:mm:ss.SSS zzz yyyy"] - 你原有配置中的
locale => "en_US"参数是必要的,需要保留以正确匹配英文缩写的星期、月份字段。
内容的提问来源于stack exchange,提问作者fuggi
相关产品推荐
相关产品推荐

