Загрузка данных


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();
    }
}