【发布时间】:2020-05-12 22:24:54
【问题描述】:
我有一个名为 logfile.log 的文件。我想通过子字符串(两个管道字符之间的测试名称)对 logfile.log 进行排序,并将输出定向到名为 sorted_logfile.log 的文件
当前日志文件.log:
2020-05-09 05:51:13,985 INFO | CreateCardTest| : -> some message
2020-05-09 05:51:13,985 INFO | WorkspaceTest| : -> some message
2020-05-09 05:51:14,779 INFO | WorkspaceTest| : -> some message
2020-05-09 05:51:14,779 INFO | CreateCardTest| : -> some message
2020-05-09 05:51:14,779 INFO | WorkspaceTest| : -> some message
2020-05-09 05:51:14,779 INFO | SavedTest| Leads : -> some message
2020-05-09 05:51:14,779 INFO | WorkspaceTest| : some message
2020-05-09 05:51:14,780 INFO | WorkspaceTest| Workspace : some message
2020-05-09 05:51:15,732 INFO | CreateCardTest| Leads : -> some message
2020-05-09 05:51:15,732 INFO | WorkspaceTest| Workspace : some message
2020-05-09 05:51:21,638 INFO | SavedTest| Leads : -> some message
2020-05-09 05:51:21,638 INFO | CreateCardTest| Leads : -> some message
2020-05-09 05:51:21,653 INFO | WorkspaceTest| Workspace : Accounts,All Accounts : -> some message
2020-05-09 05:51:21,653 INFO | WorkspaceTest| Workspace : Accounts,All Accounts : -> some message
2020-05-09 05:51:21,803 INFO | WorkspaceTest| Workspace : Accounts,All Accounts : -> some message
2020-05-09 05:51:21,803 INFO | CreateCardTest| Leads : -> some message
“CreateCardTest”、“WorkspaceTest”和“SavedTest”是测试名称。它是两个管道字符之间的子字符串,需要根据它进行排序。在测试中,消息的顺序应该相同(按当前日志文件中的时间戳排序)。
期望的 sorted_logfile.log:
2020-05-09 05:51:13,985 INFO | CreateCardTest| : -> some message
2020-05-09 05:51:14,779 INFO | CreateCardTest| : -> some message
2020-05-09 05:51:15,732 INFO | CreateCardTest| Leads : -> some message
2020-05-09 05:51:21,638 INFO | CreateCardTest| Leads : -> some message
2020-05-09 05:51:21,803 INFO | CreateCardTest| Leads : -> some message
2020-05-09 05:51:14,779 INFO | SavedTest| Leads : -> some message
2020-05-09 05:51:21,638 INFO | SavedTest| Leads : -> some message
2020-05-09 05:51:13,985 INFO | WorkspaceTest| : -> some message
2020-05-09 05:51:14,779 INFO | WorkspaceTest| : -> some message
2020-05-09 05:51:14,779 INFO | WorkspaceTest| : -> some message
2020-05-09 05:51:14,779 INFO | WorkspaceTest| : some message
2020-05-09 05:51:14,780 INFO | WorkspaceTest| Workspace : some message
2020-05-09 05:51:15,732 INFO | WorkspaceTest| Workspace : some message
2020-05-09 05:51:21,653 INFO | WorkspaceTest| Workspace : Accounts,All Accounts : -> some message
2020-05-09 05:51:21,653 INFO | WorkspaceTest| Workspace : Accounts,All Accounts : -> some message
2020-05-09 05:51:21,803 INFO | WorkspaceTest| Workspace : Accounts,All Accounts : -> some message
这是我当前的代码:
public static void main(String[] args) {
BufferedReader reader;
try {
reader = new BufferedReader(new FileReader("log/logfile.log"));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
// read next line
line = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
我如何实现这一目标?我看过 Collections.sort() 但这对子字符串不起作用。
【问题讨论】: