[英]Parsing Logs Using Google Guava
我正在寻找解析具有日志的日志文件的方法-(使用Google Guava),格式如下:
Sep 19 2006 13:23:40 MyDevice [latency][info] xmlfirewall (loopback-fw): tid(2809): Latency: 0 1 0 1 1 0 0 1 **999** 1 1 1 0 0 1 1 [http://<IP address>:9999/foo/test.xml]
我正在使用Google Guava阅读日志文件
List < String > lines = Files.readLines(new File("C://my.log"), Charsets.UTF_8);
我想做的是基于用户输入(开始时间,结束时间,IP地址),我只想拾取在开始/结束时间之间有IPAddess的那些行,然后产生这样的输出
Time,DeviceName,LatencyValue-在上述情况下,输出为
05:13:40,mydevice在,999
我应该怎么做。
看看在CharStreams.readLines方法和LineProcessor接口-我用,这样做的效果也不错的大文件流解析。
我认为Guava不会在这里为您提供帮助,我个人也不会将文件读到行列表中。
相反,我将使用正则表达式并在整个文本中运行它,如下所示:
// define pattern as constant
private static final Pattern PATTERN =
Pattern.compile("^.*(?:\\d{1,3}\\.){3}\\d{1,3}.*$",Pattern.MULTILINE);
//now use the pattern in your code (inside a method):
List<String> matchingLines = Lists.newArrayList();
Matcher matcher = PATTERN.matcher(logFileContentsAsString);
while(matcher.find()){
String line = matcher.group();
if(performSomeAdditionalTests(line, userData))
matchingLines.add(line);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.