日期时间的匹配模式问题

碰到个问题,来论坛请教一下,主要是对以下两种时间进行匹配,不使用判断
Wed Oct 24 13:59:18 2018
Wed Oct 9 13:59:18 2018

这次碰到一个比较奇怪的日期格式,单位数的日期不是正常的0x,而是空格x,这就坐蜡了,原本写的"EEE MMM dd HH:mm:ss yyyy"匹配规则直接就报错了,这又是某个工具里面嵌套的,不太好加判断,问下大家能不能同时匹配这两,其嵌套的pattern使用的是以下网站的DateTimeFormat.

pattern:
https://www.joda.org/joda-tim...

阅读 1.8k
1 个回答

这个是GRAYLOG日志分析系统的,感谢github上热心的开发者,问题已经解决,最后还是加了grok正则匹配判断日期格式,附pipelines规则

规则一:

rule "prase date "
// we want to create ISO8601 Timestamps
// make 'Wed Oct 24 13:59:18 2018' ISO8601
when
    grok(pattern: "%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR}", value:to_string($message.transaction_time_stamp)).matches == true
then
    let time = parse_date(value:to_string($message.transaction_time_stamp), pattern:"EEE MMM dd HH:mm:ss yyyy", timezone:"Asia/Shanghai");
    set_field("timestamp",time);
end

规则二:

rule "prase date (single number day)"
// we want to create ISO8601 Timestamps
// make 'Wed Oct  4 13:59:18 2018' ISO8601
// cisco did not use 05 but <space>5 for days with a single digit
when
    grok(pattern: "%{DAY} %{MONTH}  %{MONTHDAY} %{TIME} %{YEAR}", value:to_string($message.transaction_time_stamp)).matches == true
then
    let time = parse_date(value:to_string($message.transaction_time_stamp), pattern:"EEE MMM  d HH:mm:ss yyyy", timezone:"Asia/Shanghai");
    set_field("timestamp",time);
end

附github提问链接:
https://github.com/Graylog2/g...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题