【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();
        }
    }
}
相关推荐
贫民窟的勇敢爷们4 小时前
SpringBoot整合AOP切面编程实战,实现日志统一记录+接口权限校验
java·spring boot·spring
AC赳赳老秦5 小时前
供应链专员提效:OpenClaw自动跟踪物流信息、更新库存数据,异常自动提醒
java·大数据·服务器·数据库·人工智能·自动化·openclaw
迈巴赫车主5 小时前
Java基础:list、set、map一遍过
java·开发语言
灵犀学长6 小时前
基于 Spring ThreadPoolTaskScheduler + CronTrigger 实现的动态定时任务调度系统
java·数据库·spring
好家伙VCC7 小时前
【无标题】
java
小碗羊肉8 小时前
【JavaWeb | 第十一篇】文件上传(本地&阿里云OSS)
java·阿里云·servlet
吾疾唯君医8 小时前
Java SpringBoot集成积木报表实操记录
java·spring boot·spring·导出excel·积木报表·数据文件下载
Byron Loong8 小时前
【c++】为什么有了dll和.h,还需要包含lib
java·开发语言·c++
hexu_blog9 小时前
vue+java实现图片批量压缩
java·前端·vue.js
头歌实践平台9 小时前
Hadoop开发环境搭建
java·大数据·hadoop