【Java工具类】Java提取最新错误日志(附 AI 对接思路)

前言

在日常开发和维护中,我们经常需要快速查看服务器最新生成的日志文件,并从中筛选出关键的 ERROR 错误信息。虽然市面上有 ELK、Splunk 等大型日志分析平台,但在一些轻量级场景或临时排查中,编写一个简单直接的 Java 工具类往往更加高效。

一、核心功能设计

我们的目标工具需要具备以下能力:

  1. 自动遍历指定目录。

  2. 锁定最后修改时间最新的那个 .log 文件。

  3. 逐行读取,筛选出包含 ERROR 的行。

  4. 预留了调用 AI 大模型 分析错误并输出解决方案的接口。

二、应用场景

  1. 快速排查: 当服务报错时,无需登录服务器使用 grep 命令,直接运行此工具类即可定位最新错误。

  2. 自动化巡检脚本:结合 Crontab 或 Spring Schedule,每分钟运行一次,自动发现新产生的 ERROR 日志。

  3. AI 辅助运维 Demo:作为引入大模型进行智能运维(AIOps)的最小可行性产品(MVP),验证"错误日志自动分析"的流程。

三、代码实现详解

java 复制代码
package org.jeecg.modules.utils;

import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;
import java.util.Optional;
import java.util.stream.Stream;

@Slf4j
public class ServiceLogUtil {

    private static final String directoryPath = "文件目录地址";// 文件目录地址
    private static final String fileSuffix = ".log";// 文件后缀

    public static void main(String[] args) {

        // 1.获取目录下所有文件
        try (Stream<Path> paths = Files.walk(Paths.get(directoryPath))) {
            // 2.过滤出 .log 普通文件,并找出最新修改的
            Optional<Path> latestLogFile = paths
                    .filter(Files::isRegularFile)
                    .filter(p -> p.toString().endsWith(fileSuffix))
                    .max(Comparator.comparingLong(p -> p.toFile().lastModified()));
            // 3.如果存在最新文件,则处理
            latestLogFile.ifPresent(p -> {
                // 4.读取文件行
                try (Stream<String> lines = Files.lines(p)) {
                    // 5.遍历行,筛选出 ERROR 行并打印
                    lines.forEach(line -> {
                        if (line != null && line.contains("ERROR")) {
                            // 6.打印错误行
                            System.out.println(line);
                            // 7.调用AI大模型,将错误行发送给AI大模型
                            String json = "解决方案:XXXXXXX," + line;
                            // 8.将AI大模型的回复发送给相关人员
                            log.error(json);
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
相关推荐
workflower4 分钟前
AI制造-推荐初始步骤
java·开发语言·人工智能·软件工程·制造·需求分析·软件需求
ACGkaka_2 小时前
SimpleDateFormat 线程安全问题及修复方案
java·jvm·安全
leo_messi942 小时前
多线程(五) -- 并发工具(二) -- J.U.C并发包(八) -- CompletableFuture组合式异步编程
android·java·c语言
m0_380113843 小时前
SpringBoot创建动态定时任务的几种方式
java·spring boot·spring
Gofarlic_OMS3 小时前
SolidEdge专业许可证管理工具选型关键评估标准
java·大数据·运维·服务器·人工智能
清华都得不到的好学生3 小时前
数据结构->1.稀疏数组,2.数组队列(没有取模),3.环形队列
java·开发语言·数据结构
weyyhdke3 小时前
基于SpringBoot和PostGIS的省域“地理难抵点(最纵深处)”检索及可视化实践
java·spring boot·spring
ILYT NCTR3 小时前
【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
java·spring boot·spring
weixin_425023003 小时前
PG JSONB 对应 Java 字段 + MyBatis-Plus 完整实战
java·开发语言·mybatis