찾다
Javajava지도 시간Java에서 로그 파일 모니터링을 구현하고 관련 데이터를 읽는 방법

프로젝트 요구 사항

데이터 센터 프로젝트 팀은 파일 및 폴더가 변경될 때 해당 비즈니스 프로세스를 수행하기 위해 폴더 또는 로그 파일을 모니터링하고 해당 형식의 더티 데이터를 읽는 요구 사항을 구현해야 하므로 여기에 기록합니다. 관련사업의 기술선정.

Apache Commons-IO

먼저 해당 종속성을 추가해야 합니다.

<dependency>
 <groupId>commons-io</groupId>
 <artifactId>commons-io</artifactId>
 <version>2.7</version>
</dependency>

버전은 직접 선택할 수 있습니다. 버전 2.7 이상에는 Java 8

공식 웹사이트 스크린샷이 필요합니다.

Java에서 로그 파일 모니터링을 구현하고 관련 데이터를 읽는 방법

Apache Commos IO org.apache.commons.io.monitor 패키지는 파일 시스템 모니터링 기능을 제공합니다. org.apache.commons.io.monitor包提供了文件系统监听的功能。

Java에서 로그 파일 모니터링을 구현하고 관련 데이터를 읽는 방법

核心知识

  • 一句话总结:通过观察者模式以及事件监听机制,以 FileAlterationObserver 为核心,再通过 FileAlterationListenerFileAlterationMonitor,就可以实现对文件系统的事件监听。

  • 整体流程:

  • 自定义文件监听类并继承 FileAlterationListenerAdaptor 实现对文件与目录的创建,修改,删除事件的处理

  • 自定义文件监控类,通过指定目录创建一个观察者 FileAlterationObserver

  • 向此监视器添加文件系统观察器,并添加文件监听器

  • 通过 ApplicationRunner 或者 CommandLineRunner 调用并执行

代码实现

  • 文件监听类:

/**
 * 文件监听类
 * @author Greenarrow
 * @date 2022-05-12 14:43
 **/
public class FileListener extends FileAlterationListenerAdaptor {

    private static Logger logger = LoggerFactory.getLogger(FileListener.class);
    @Override
    public void onStart(FileAlterationObserver observer) {
        super.onStart(observer);
        logger.info("onStart");
    }

    @Override
    public void onDirectoryCreate(File directory) {
        logger.info("[新建]:" + directory.getAbsolutePath());
    }

    @Override
    public void onDirectoryChange(File directory) {
        logger.info("[修改]:" + directory.getAbsolutePath());
    }

    @Override
    public void onDirectoryDelete(File directory) {
        logger.info("[删除]:" + directory.getAbsolutePath());
    }

    @Override
    public void onFileCreate(File file) {
        String compressedPath = file.getAbsolutePath();
        logger.info("[新建]:" + compressedPath);
        List<String> contentList = null;
        try {
            if (file.canRead()){
                // 将文件按行读取为字符串集合
                contentList = FileUtils.readLines(new File(compressedPath), StandardCharsets.UTF_8);
                if (CollectionUtil.isNotEmpty(contentList)){
                    // 获取对应格式的数据并输出,这里可自行添加业务处理
                    List<String> dirtyRecord  = contentList.stream().filter(s -> s.startsWith("{") && s.endsWith("}")).collect(Collectors.toList());
                    dirtyRecord.forEach(System.out::println);
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
            logger.error("读取文件内容失败",e);
        }
    }

    @Override
    public void onFileChange(File file) {
        String compressedPath = file.getAbsolutePath();
        logger.info("[修改]:" + compressedPath);
    }

    @Override
    public void onFileDelete(File file) {
        logger.info("[删除]:" + file.getAbsolutePath());
    }

    @Override
    public void onStop(FileAlterationObserver observer) {
        super.onStop(observer);
        logger.info("onStop");
    }
}
  • 文件监控类:

/**
 * 文件监听测试 demo
 * @author Greenarrow
 * @date 2022-05-12 14:45
 **/
public class FileMonitor {

    FileAlterationMonitor monitor = null;

    public FileMonitor(long interval) throws Exception {
        monitor = new FileAlterationMonitor(interval);
    }

    /**
     * 给文件添加监听
     * @param path
     * @param listener
     */
    public void monitor(String path, FileAlterationListener listener) {
        FileAlterationObserver observer = new FileAlterationObserver(new File(path));
        monitor.addObserver(observer);
        observer.addListener(listener);
    }

    public void stop() throws Exception {
        monitor.stop();
    }

    public void start() throws Exception {
        monitor.start();

    }
}
  • 自定义 Runner 并实现 CommandLineRunner

    Java는 로그 파일 모니터링을 구현하고 관련 데이터를 읽는 방법
핵심 지식🎜
  • 🎜한 문장 요약: 관찰자 모드 및 이벤트 수신 메커니즘을 통해 FileAlterationObserver를 핵심으로 한 다음 FileAlterationListener , FileAlterationMonitor를 사용하면 파일 시스템의 이벤트 모니터링을 구현할 수 있습니다. 🎜🎜
  • 🎜전체 프로세스: 🎜🎜🎜
    • 🎜파일 수신 클래스를 사용자 정의하고 FileAlterationListenerAdaptor를 상속하여 파일 및 디렉터리를 생성하고 처리합니다. 수정 및 삭제 이벤트🎜🎜
    • 🎜사용자 정의 파일 모니터링 클래스, FileAlterationObserver🎜🎜
    • 🎜이 모니터에 파일 시스템 관찰자를 추가하고 파일을 추가하여 관찰자를 생성합니다. 리스너 🎜🎜
    • 🎜ApplicationRunner 또는 CommandLineRunner를 통해 🎜🎜🎜🎜코드 구현을 호출하고 실행합니다. 🎜
      • 🎜파일 모니터링 클래스: 🎜🎜🎜
        /**
         * 项目启动之后开启文件监听功能
         * @author Greenarrow
         * @date 2022-05-12 10:02
         **/
        @Component
        // @Order(Integer.MIN_VALUE)
        public class DirtyRecordRunner implements CommandLineRunner {
        
            private static Logger logger = LoggerFactory.getLogger(DirtyRecordRunner.class);
        
            @Value("${test}")
            private String path;
        
            @Override
            public void run(String... args) throws Exception {
                logger.info(this.getClass().getName()+"[开启文件夹监听功能]");
                FileMonitor fileMonitor = new FileMonitor(1000);
                fileMonitor.monitor(path,new FileListener());
                fileMonitor.start();
            }
        }
        • 🎜파일 모니터링 클래스: 🎜🎜🎜rrreee
            🎜Customize CommandLineRunner 실행 및 구현:🎜🎜🎜rrreee

위 내용은 Java에서 로그 파일 모니터링을 구현하고 관련 데이터를 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 亿速云에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?Mar 17, 2025 pm 05:46 PM

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까?적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까?Mar 17, 2025 pm 05:45 PM

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?Mar 17, 2025 pm 05:44 PM

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?Mar 17, 2025 pm 05:43 PM

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?Mar 17, 2025 pm 05:35 PM

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는