解析日志..只是无法搞清楚

时间:2012-07-31 23:27:46

标签: java

好吧,所以我应该创建一个脚本来解析来自irc频道的所有聊天记录,组合匹配名称的聊天记录,然后按日期对聊天记录进行排序。

这是一个示例聊天记录:

    jul 29 19:20:53 <lol> lolfile3
    jul 31 19:20:53 <lol> lolfile3321
    aug 1 19:20:53 <lol> lolfile31324
    jul 30 19:20:53 <lol> lolfile32

我需要按时间戳(jul 30 19:20:53)订购它们,但是我已经连续几个小时都在尝试,但无济于事。

这是我已经拥有的代码(这是文件合并,文件编写和所有内容。时间戳是我需要做的最后一件事!)

我无法弄清楚如何在我的问题中添加代码,因此我将您链接到pastebin: http://pastebin.com/2VrSRZZr

非常感谢您通过发布代码来帮助我。显然,我不希望被舀勺,但有些代码会很好。

1 个答案:

答案 0 :(得分:0)

我不完全确定你的例子中的“”是什么,所以这可能不完全正确,但它显示了如何将时间戳字符串转换为可比较的对象。希望这能让你走上正轨。

DateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy")
List<String> lines = readLines(); // use a function of your to read the lines
List<LogEntry> entries = new LinkedList<LogEntry>();
for ( String line : lines ) {
  int splitIndex = line.indexOf("<log>");
  String time = line.substring(0,splitIndex);
  Date date = dateFormat.parse(time);
  entries.add(new LogEntry(date,line.substring(splitIndex));
}

Collections.sort(entries);


// create a class to hold the log contents and the timestamp

class LogEntry implements Comparable<LogEntry> {
    private final Date time;
    private final String entry;

    public void compare(LogEntry other) {
       return time.compareTo(other.time);
    }
}

编辑:我运行了你在pastebin中创建的代码,输出是

Fri Jul 29 17:09:50 EDT 2011 <phl0w> tes
Sun Jul 31 17:08:49 EDT 2011 <yyyy> alewrwae
Sun Jul 31 17:09:50 EDT 2011 <phl0w> tes
Sun Jul 31 17:10:49 EDT 2011 <Andy_> Speed
Sun Jul 31 17:10:51 EDT 2011 <Andy_> lol Speed
Sun Jul 31 17:11:51 EDT 2011 <xxxx> wrkjaer
Sun Jul 31 19:20:50 EDT 2011 <phl0w> lolfile1
Sun Jul 31 19:20:53 EDT 2011 <phl0w> lolfile3