Compare commits
2 Commits
03837d21fd
...
0f4f74cbaf
| Author | SHA1 | Date | |
|---|---|---|---|
| 0f4f74cbaf | |||
| 37f417f478 |
10
.idea/.gitignore
generated
vendored
Normal file
10
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# 디폴트 무시된 파일
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# 쿼리 파일을 포함한 무시된 디폴트 폴더
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
|
# 에디터 기반 HTTP 클라이언트 요청
|
||||||
|
/httpRequests/
|
||||||
6
.idea/PMDPlugin.xml
generated
Normal file
6
.idea/PMDPlugin.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="PMDPlugin">
|
||||||
|
<option name="skipTestSources" value="false" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
9
.idea/log-hunter.iml
generated
Normal file
9
.idea/log-hunter.iml
generated
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
6
.idea/misc.xml
generated
Normal file
6
.idea/misc.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/log-hunter.iml" filepath="$PROJECT_DIR$/.idea/log-hunter.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
161
README.md
161
README.md
@@ -1 +1,160 @@
|
|||||||
Log Hunter
|
# LogHunter
|
||||||
|
|
||||||
|
SFTP를 통해 원격 서버의 로그 파일을 수집하고, 등록된 패턴으로 에러를 검출하여 관리하는 윈도우 데스크탑 애플리케이션
|
||||||
|
|
||||||
|
## 개요
|
||||||
|
|
||||||
|
- **목적**: 폐쇄망 환경에서 여러 리눅스 서버의 로그를 수집하여 에러를 검출하고 관리
|
||||||
|
- **실행 환경**: Windows
|
||||||
|
- **대상 서버**: Linux (SFTP)
|
||||||
|
- **동작 방식**: 필요 시 수동 실행 → 웹 UI에서 분석 실행 및 결과 조회
|
||||||
|
|
||||||
|
## 주요 기능
|
||||||
|
|
||||||
|
- SFTP를 통한 로그 파일 수집 (비밀번호 / 키 파일 인증)
|
||||||
|
- 정규식 기반 에러 패턴 매칭
|
||||||
|
- 에러 발생 전후 컨텍스트 캡처
|
||||||
|
- 서버별 분석 이력 관리
|
||||||
|
- HTML/TXT 리포트 내보내기
|
||||||
|
|
||||||
|
## 기술 스택
|
||||||
|
|
||||||
|
| 구분 | 기술 |
|
||||||
|
|------|------|
|
||||||
|
| Backend | Spring Boot |
|
||||||
|
| Frontend | Vue3 (SPA, 빌드 후 static 폴더에 포함) |
|
||||||
|
| Database | SQLite (파일 DB) |
|
||||||
|
| SFTP | JSch |
|
||||||
|
| 배포 | 단일 jar 파일 |
|
||||||
|
|
||||||
|
## 화면 구성
|
||||||
|
|
||||||
|
| # | 화면명 | 설명 |
|
||||||
|
|---|--------|------|
|
||||||
|
| 1 | 대시보드 | 서버 목록, 마지막 분석/에러 일시, 실행 버튼, 진행상황 표시 |
|
||||||
|
| 2 | 에러 이력 | 전체 에러 조회/검색/필터, 상세보기 (컨텍스트 포함) |
|
||||||
|
| 3 | 서버 관리 | SFTP 서버 등록/수정/삭제, 로그 경로 복수 등록, 연결 테스트 |
|
||||||
|
| 4 | 패턴 관리 | 에러 패턴 등록/수정/삭제, 패턴 테스트 |
|
||||||
|
| 5 | 설정 | 내보내기 경로, 로그 보관 기간, 포트 설정 |
|
||||||
|
|
||||||
|
## 폴더 구조 (예정)
|
||||||
|
|
||||||
|
```
|
||||||
|
log-hunter/
|
||||||
|
├── backend/ # Spring Boot
|
||||||
|
│ └── src/main/resources/
|
||||||
|
│ └── static/ # Vue3 빌드 결과물
|
||||||
|
├── frontend/ # Vue3 (개발용)
|
||||||
|
│ └── src/
|
||||||
|
│ └── views/
|
||||||
|
├── data/ # SQLite DB
|
||||||
|
├── exports/ # HTML/TXT 내보내기
|
||||||
|
└── config/ # 설정 파일
|
||||||
|
```
|
||||||
|
|
||||||
|
## 실행 시 동작
|
||||||
|
|
||||||
|
```
|
||||||
|
log-hunter.jar 실행
|
||||||
|
↓
|
||||||
|
내장 톰캣 (localhost:8080)
|
||||||
|
↓
|
||||||
|
자동으로 브라우저 열림
|
||||||
|
↓
|
||||||
|
웹 UI에서 서버별 분석 실행
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 작업 Step
|
||||||
|
|
||||||
|
### Step 1. 프로젝트 초기 설정
|
||||||
|
|
||||||
|
- [ ] 1-1. Spring Boot 프로젝트 생성
|
||||||
|
- [ ] 1-2. Vue3 프로젝트 생성 (frontend 폴더)
|
||||||
|
- [ ] 1-3. 빌드 연동 (Vue → static 폴더로)
|
||||||
|
- [ ] 1-4. SQLite 연동 확인
|
||||||
|
- [ ] 1-5. 앱 실행 시 브라우저 자동 오픈
|
||||||
|
|
||||||
|
### Step 2. DB 스키마 설계
|
||||||
|
|
||||||
|
- [ ] 2-1. servers 테이블 (SFTP 서버 정보)
|
||||||
|
- [ ] 2-2. server_log_paths 테이블 (서버별 로그 경로, 1:N)
|
||||||
|
- [ ] 2-3. patterns 테이블 (에러 패턴 정의)
|
||||||
|
- [ ] 2-4. scan_history 테이블 (분석 실행 이력)
|
||||||
|
- [ ] 2-5. error_logs 테이블 (검출된 에러)
|
||||||
|
- [ ] 2-6. settings 테이블 (전역 설정, key-value)
|
||||||
|
|
||||||
|
### Step 3. Backend - 기본 CRUD API
|
||||||
|
|
||||||
|
- [ ] 3-1. 서버 관리 API (CRUD)
|
||||||
|
- [ ] 3-2. 로그 경로 관리 API
|
||||||
|
- [ ] 3-3. 패턴 관리 API (CRUD)
|
||||||
|
- [ ] 3-4. 설정 API
|
||||||
|
- [ ] 3-5. 비밀번호/passphrase 암호화 유틸
|
||||||
|
|
||||||
|
### Step 4. Backend - 핵심 기능
|
||||||
|
|
||||||
|
- [ ] 4-1. SFTP 연결 (비밀번호 / 키 파일)
|
||||||
|
- [ ] 4-2. 연결 테스트 API
|
||||||
|
- [ ] 4-3. 파일 목록 조회 (마지막 분석 이후 파일)
|
||||||
|
- [ ] 4-4. 파일 다운로드
|
||||||
|
- [ ] 4-5. 로그 파싱 + 패턴 매칭 엔진
|
||||||
|
- [ ] 4-6. 에러 저장 (컨텍스트 포함)
|
||||||
|
- [ ] 4-7. 분석 실행 API (진행상황 SSE 또는 WebSocket)
|
||||||
|
|
||||||
|
### Step 5. Backend - 내보내기
|
||||||
|
|
||||||
|
- [ ] 5-1. HTML 리포트 생성
|
||||||
|
- [ ] 5-2. 에러 상세 TXT 파일 생성
|
||||||
|
- [ ] 5-3. 내보내기 API
|
||||||
|
|
||||||
|
### Step 6. Frontend - 공통
|
||||||
|
|
||||||
|
- [ ] 6-1. 레이아웃 (헤더, 사이드메뉴)
|
||||||
|
- [ ] 6-2. 라우터 설정
|
||||||
|
- [ ] 6-3. API 클라이언트 (axios)
|
||||||
|
- [ ] 6-4. 공통 컴포넌트 (테이블, 모달, 폼)
|
||||||
|
|
||||||
|
### Step 7. Frontend - 화면 개발
|
||||||
|
|
||||||
|
- [ ] 7-1. 대시보드 (서버 목록 + 실행 + 진행상황)
|
||||||
|
- [ ] 7-2. 에러 이력 (필터 + 목록 + 상세보기)
|
||||||
|
- [ ] 7-3. 서버 관리 (목록 + 추가/수정 폼)
|
||||||
|
- [ ] 7-4. 패턴 관리 (목록 + 추가/수정 + 테스트)
|
||||||
|
- [ ] 7-5. 설정
|
||||||
|
|
||||||
|
### Step 8. 테스트 및 마무리
|
||||||
|
|
||||||
|
- [ ] 8-1. 로컬 SFTP 서버로 테스트 (Docker)
|
||||||
|
- [ ] 8-2. 실제 로그 샘플로 패턴 검증
|
||||||
|
- [ ] 8-3. 단일 jar 빌드
|
||||||
|
- [ ] 8-4. 실행 스크립트 (bat 파일)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 작업 순서
|
||||||
|
|
||||||
|
```
|
||||||
|
Step 1 → Step 2 → Step 3 → Step 6 (공통)
|
||||||
|
↓
|
||||||
|
Step 7-3, 7-4 (서버/패턴 관리)
|
||||||
|
↓
|
||||||
|
Step 4 (핵심 기능)
|
||||||
|
↓
|
||||||
|
Step 7-1 (대시보드 + 실행)
|
||||||
|
↓
|
||||||
|
Step 7-2 (에러 이력)
|
||||||
|
↓
|
||||||
|
Step 5, 7-5 (내보내기, 설정)
|
||||||
|
↓
|
||||||
|
Step 8 (테스트/빌드)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 변경 이력
|
||||||
|
|
||||||
|
| 날짜 | 내용 |
|
||||||
|
|------|------|
|
||||||
|
| 2025-01-06 | 최초 작성, 요구사항 정리 |
|
||||||
|
|||||||
Reference in New Issue
Block a user