import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class LogAnalyzer {
public static Optional<LogEntry> parseLogLine(String line) {
Pattern pattern = Pattern.compile(
"\\[(.*?)\\]\\s+(\\d{1,3}(?:\\.\\d{1,3}){3})\\s+(\\w+)\\s+(.*)"
);
Matcher matcher = pattern.matcher(line);
if (matcher.matches()) {
String dateStr = matcher.group(1);
String ip = matcher.group(2);
String level = matcher.group(3);
String message = matcher.group(4);
DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime timestamp =
LocalDateTime.parse(dateStr, formatter);
LogEntry entry =
new LogEntry(timestamp, ip, level, message);
return Optional.of(entry);
}
return Optional.empty();
}
}