繁体   English   中英

使用Google Guava解析日志

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM