多行解析



我正在解析一个日志文件:

2015-07-15 12:59:39 +0530 [ERROR] index=abc host=abc
2015-07-15 12:59:39 +0530 [WARNING] index=def
host=def
2015-07-15 12:59:39 +0530 [INFO] index=ghi host=ghi

每个日志都以时间戳开始。

我正在考虑单独解析日志。我想通过时间戳和抓取来分隔它们,所以我写了一个regex:

text = File.open('logs.txt').read
log = text[/^d{4}-d{2}-d{2}(.*?)^d{4}-d{2}-d{2}/m, ].to_s
.gsub(/s/m,' ').strip.split(' ')
puts log #Prints 2015-07-15 12:59:39 +0530 [ERROR] index=abc host=abc

但是,这只获取第一个日志:

2015-07-15 12:59:39 +0530 [ERROR] index=abc host=abc 

而不是其他

  1. 如何在第一个日志之后继续获取日志?
  2. 有更好的方法来处理这个比我的方法?

谢谢。

  1. 使用scan代替[]
  2. 逐行读取而不是一次读取整个日志文件。

格式是否正确,日志是否可以跨越多行?如果它们用换行符分隔,您可以使用

log = text.lines

相关内容

  • 没有找到相关文章

最新更新