gpt4 book ai didi

java - 如何从日志文件中打印出特定日期之间的字符串

转载 作者:行者123 更新时间:2023-12-01 13:08:41 25 4
gpt4 key购买 nike

所以我有一个日志文件,我需要搜索某些字符串并打印出位于某些日期范围之间的行。

我已经完成了第一部分,但我陷入了第二部分。我如何打印出特定日期内的字符串。假设我想打印 2012-09-01 到 2012-09-15 之间的所有字符串

日志示例:

 2012-09-13 16:04:22 DEBUG SID:34523 BID:1329 RID:65d33 'Starting new session' 2012-09-13 16:04:30 DEBUG SID:34523 BID:1329 RID:54f22 'Authenticating User' 2012-09-13 16:05:30 DEBUG SID:42111 BID:319 RID:65a23 'Starting new session' 2012-09-13 16:04:50 ERROR SID:34523 BID:1329 RID:54ff3 'Missing Authentication token' 2012-09-13 16:05:31 DEBUG SID:42111 BID:319 RID:86472 'Authenticating User' 2012-09-13 16:05:31 DEBUG SID:42111 BID:319 RID:7a323 'Deleting asset with ID 543234' 2012-09-13 16:05:32 WARN SID:42111 BID:319 RID:7a323 'Invalid asset ID'

This is my code so far:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;


public class ReadLogs {

public static void main(String args[]) throws FileNotFoundException{
String line, logString ="";
Date startDate, endDate;

ArrayList<String> logList = new ArrayList<>();

Scanner logScanner = new Scanner(new File("C:\\Users\\cmccarth\\Desktop\\logs.txt"));
while (logScanner.hasNextLine()) {
line = logScanner.nextLine();
logList.add(line);
}

for (String z : logList) {
// System.out.println(z);
}


// This function prints out all lines containing a specific string

for( int i = 0; i <= logList.size() - 1; i++)
{
logString = logList.get(i);
if(logString.contains("16:04:22")){
System.out.println("String Contains" +logString);
}

}
}
}

最佳答案

执行以下步骤:

1) 创建 2 个 Date 对象,其中包含您要搜索的日期范围(使用简单日期格式获取这些日期):

 Date lowerRange; 
Date upperRange;

2) 现在循环遍历过滤后的日志列表,并对从日志文件中获取的字符串进行标记,然后将日期获取为 tokens[0]。

String[] tokens = logString.split(" ");
String dateStr = tokens[0];

// Convert this date to String using Simple Date Format
Date date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH).parse(dateStr);

3) 现在您可以将此日期与您必须查看的 2 个日期进行比较,看看它是否在范围内。

if(date > lowerRange && date < upperRange)
{
// this is the date you wanted...process the log file entry
}

请参阅以下 SO 帖子以了解字符串到日期的转换:String-to-date

关于java - 如何从日志文件中打印出特定日期之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com