Log Generator Tool
로그 분석기 개발 및 테스트를 위한 자동 로그 생성 도구
개요
Log Generator Tool은 다양한 형태의 로그를 자동으로 생성하여 로그 분석기 개발 및 테스트를 지원하는 Python 기반 도구입니다. 실제 운영 환경과 유사한 로그 패턴을 생성하여 현실적인 테스트 데이터를 제공합니다.
🎯 주요 특징
- 📁 스마트한 파일 관리: 로그 타입별 자동 파일 분류로 체계적인 로그 관리 (기본값)
- 🔧 다양한 로그 타입: Nginx, Apache, Syslog, FastAPI, Django, Docker, Kubernetes 등 10+ 로그 타입 지원
- ⚙️ 고도로 커스터마이징 가능: 사용자 정의 패턴, 필드, 에러 시나리오 지원
- 🎭 현실적인 데이터: 실제 운영 환경에서 수집한 에러 패턴과 로그 형식
- 🚀 고성능: 가상 시간 기반 엔진으로 초당 4,000+ 로그 생성 가능 (실제 sleep 없음)
- 📤 다양한 출력: 멀티 파일(기본), 단일 파일, 콘솔, 네트워크(TCP/UDP), JSON 등
- 🔌 확장 가능: 플러그인 아키텍처로 새로운 로그 타입 쉽게 추가
빠른 시작
설치
# PyPI에서 설치
pip install log-generator-tool
# 또는 소스에서 설치
git clone https://github.com/your-org/log-generator-tool.git
cd log-generator-tool
pip install -e .
기본 사용법
# 기본 설정으로 로그 생성 시작 (멀티 파일 출력)
log-generator start
# 특정 로그 타입만 생성
log-generator start --types nginx_access,syslog
# 1만 개 로그 생성 후 종료
log-generator start --total 10000
# 설정 파일 사용
log-generator start --config config.yaml
설정 파일 예제
# config.yaml
log_generator:
global:
output_format: "multi_file" # 로그 타입별 별도 파일 생성
output_path: "./logs"
generation_interval: 0.1
# 멀티 파일 출력 설정
multi_file:
file_pattern: "{log_type}_{date}.log" # nginx_access_20241215.log
date_format: "%Y%m%d"
log_types:
nginx_access:
enabled: true
frequency: 0.4
custom_fields:
status_codes: {200: 0.8, 404: 0.15, 500: 0.05}
syslog:
enabled: true
frequency: 0.3
facilities: ["kern", "auth", "daemon"]
지원하는 로그 타입
| 로그 타입 | 설명 | 예제 |
|---|---|---|
| Nginx | 접근/에러 로그 | 192.168.1.1 - - [25/Dec/2023:10:00:00 +0000] "GET /" 200 1234 |
| Apache | 웹 서버 로그 | 192.168.1.1 - - [25/Dec/2023:10:00:00 +0000] "GET /" 200 1234 |
| Syslog | 시스템 로그 | Dec 25 10:00:00 server kernel: Out of memory |
| FastAPI | API 서버 로그 | 2023-12-25 10:00:00 INFO: GET /api/users 200 45ms |
| Django | 웹 프레임워크 로그 | [25/Dec/2023 10:00:00] INFO django.request: GET /admin/ |
| Docker | 컨테이너 로그 | 2023-12-25T10:00:00Z container-name: Application started |
| Kubernetes | 오케스트레이션 로그 | 2023-12-25T10:00:00Z pod/web-app-123 Container started |
| MySQL | 데이터베이스 로그 | 2023-12-25T10:00:00.123Z Query: SELECT * FROM users |
| PostgreSQL | 데이터베이스 로그 | 2023-12-25 10:00:00 LOG: connection received |
출력 방식
파일 출력
# 기본 파일 출력
log-generator start --output file --file-path ./logs/output.log
# 로그 로테이션 포함
log-generator start --output file --rotation-size 100MB --max-files 10
네트워크 출력
# TCP로 원격 서버에 전송
log-generator start --output network --host logserver --port 5140
# UDP로 Syslog 서버에 전송
log-generator start --output network --protocol udp --host syslog-server --port 514
JSON 구조화 출력
# JSON 형식으로 출력
log-generator start --output json --structured
고급 기능
커스텀 로그 패턴
custom_patterns:
my_app:
template: "{timestamp} [{level}] {component}: {message}"
fields:
timestamp: "datetime"
level: ["INFO", "WARN", "ERROR"]
component: ["auth", "database", "cache"]
message: "sentence"
에러 시나리오 시뮬레이션
error_patterns:
database_errors:
- pattern: "Connection timeout to database"
frequency: 0.1
severity: "error"
- pattern: "Deadlock detected in transaction"
frequency: 0.05
severity: "critical"
성능 최적화
performance:
threads: 8 # CPU 코어 수에 맞춰 조정
batch_size: 2000 # 배치 처리 크기
buffer_size: 20000 # 메모리 버퍼 크기
async_io: true # 비동기 I/O 활성화
출력 형식
📁 멀티 파일 출력 (기본값)
로그 타입별로 별도 파일을 생성하여 관리가 용이합니다.
# 기본 설정으로 멀티 파일 생성
log-generator start
# 명시적으로 멀티 파일 지정
log-generator start --output multi_file --path ./logs
# 생성되는 파일들:
# ./logs/nginx_access_20241215.log
# ./logs/nginx_error_20241215.log
# ./logs/syslog_20241215.log
# ./logs/fastapi_20241215.log
📄 단일 파일 출력
모든 로그를 하나의 파일에 저장합니다.
# 모든 로그를 하나의 파일에 저장
log-generator start --output file --path ./logs/all_logs.log
🖥️ 기타 출력 형식
# 콘솔 출력
log-generator start --output console
# 네트워크 출력 (Syslog, ELK Stack 등)
log-generator start --output network --host 192.168.1.100 --port 514
# JSON 형식 출력
log-generator start --output json --path ./logs/structured_logs.json
사용 사례
🔍 로그 분석기 테스트
# ELK Stack 테스트용 로그 생성
log-generator start --output network --host elasticsearch --port 9200 --format json
🚨 모니터링 시스템 테스트
# Prometheus/Grafana 테스트용 메트릭 로그
log-generator start --type fastapi --include-metrics --output network --host prometheus
🏗️ 마이크로서비스 환경 시뮬레이션
# 마이크로서비스 로그 패턴으로 생성
log-generator start --config microservices_config.yaml
성능 벤치마크
🚀 최신 성능 결과
테스트 환경: Apple M2 Pro, 16GB RAM, macOS Sonoma
| 설정 | generation_interval | 가상 시간 | 성능 | 평가 |
|---|---|---|---|---|
| 기본 설정 | 0.1s | ✅ | 1,000 logs/sec | ✅ 양호 |
| 고성능 설정 | 0.01s | ✅ | 3,000 logs/sec | 🚀 우수 |
| 극한 설정 | 0.001s | ✅ | 4,000+ logs/sec | ⚡ 최고 |
📊 실제 벤치마크
# 성능 벤치마크 실행
python examples/performance_benchmark.py --total 50000
# 결과 예시:
# Total logs generated: 100,000
# Total duration: 24.46 seconds
# Average rate: 4,095 logs/sec
# Performance Rating: 🚀 Excellent
⚡ 성능 최적화 팁
# 고성능 설정으로 실행 (가상 시간 사용)
log-generator start --interval 0.001 --virtual-time --total 10000
# 극한 성능 설정 파일 사용
log-generator start --config config/ultra_performance_config.yaml
| 환경 | 로그/초 | CPU 사용률 | 메모리 사용량 |
|---|---|---|---|
| 기본 설정 | 1,000 | 10% | 50MB |
| 최적화 설정 | 10,000 | 40% | 200MB |
| 고성능 설정 | 50,000 | 80% | 1GB |
테스트 환경: Intel i7-9700K, 32GB RAM, NVMe SSD
문서
- 📖 사용자 가이드 - 상세한 사용법과 예제
- 🔧 API 참조 - 프로그래밍 인터페이스
- 🚀 성능 최적화 - 성능 튜닝 가이드
- 🔧 트러블슈팅 - 문제 해결 방법
- ⚙️ 설정 템플릿 - 다양한 환경별 설정 예제
CLI 명령어
# 로그 생성 관련
log-generator start [OPTIONS] # 로그 생성 시작
log-generator stop # 로그 생성 중지
log-generator pause # 일시 정지
log-generator resume # 재개
# 설정 관련
log-generator config create # 설정 파일 생성
log-generator config validate # 설정 검증
log-generator config show # 현재 설정 표시
# 모니터링
log-generator status # 현재 상태 확인
log-generator stats # 통계 정보
log-generator monitor # 실시간 모니터링
# 유틸리티
log-generator sample --type nginx # 샘플 로그 확인
log-generator validate --input logs/ # 로그 검증
프로젝트 구조
log_generator/
├── core/ # 핵심 엔진 및 인터페이스
│ ├── engine.py # 메인 로그 생성 엔진
│ ├── factory.py # 로그 생성기 팩토리
│ ├── config.py # 설정 관리
│ └── interfaces.py # 기본 인터페이스
├── generators/ # 로그 타입별 생성기
│ ├── nginx.py # Nginx 로그 생성기
│ ├── syslog.py # Syslog 생성기
│ └── ...
├── outputs/ # 출력 핸들러
│ ├── file_handler.py # 파일 출력
│ ├── network_handler.py # 네트워크 출력
│ └── ...
├── patterns/ # 로그 패턴 라이브러리
└── cli.py # 명령줄 인터페이스
config/ # 설정 템플릿
docs/ # 문서
examples/ # 사용 예제
tests/ # 테스트 코드
개발 환경 설정
# 개발 의존성 설치
pip install -e ".[dev]"
# 테스트 실행
pytest tests/ -v
# 코드 품질 검사
black log_generator/ # 코드 포맷팅
isort log_generator/ # import 정렬
flake8 log_generator/ # 린팅
mypy log_generator/ # 타입 체크
# 커버리지 확인
pytest --cov=log_generator tests/
기여하기
프로젝트에 기여해 주셔서 감사합니다!
- 이슈를 확인하거나 새로운 이슈를 생성하세요
- 포크하고 브랜치를 생성하세요:
git checkout -b feature/amazing-feature - 변경사항을 커밋하세요:
git commit -m 'Add amazing feature' - 브랜치에 푸시하세요:
git push origin feature/amazing-feature - Pull Request를 생성하세요
자세한 내용은 CONTRIBUTING.md를 참조하세요.
라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
지원 및 커뮤니티
- 🐛 버그 리포트: GitHub Issues
- 💡 기능 요청: GitHub Discussions
- 📧 이메일: support@your-org.com
- 📚 문서: ReadTheDocs
로드맵
- 웹 UI 인터페이스
- 실시간 로그 스트리밍 API
- 클라우드 네이티브 배포 지원
- 머신러닝 기반 로그 패턴 학습
- 더 많은 로그 타입 지원 (Redis, MongoDB, etc.)
Log Generator Tool로 현실적이고 다양한 로그 데이터를 생성하여 로그 분석 시스템을 효과적으로 테스트하세요! 🚀
Metadata
Release files for log-generator-tool 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| log_generator_tool-1.0.1.tar.gz | 179.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| log_generator_tool-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 334.6 kB
Release files / log_generator_tool-1.0.1.tar.gz
| Download URL | log_generator_tool-1.0.1.tar.gz |
|---|---|
| Size | 179.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
87cce3388be4ce77431f4e02699c9f6637f962d3b3b1323c5723ee37ce18090f
|
|
BLAKE2b-256 checksum How to use checksums |
865df61ea27fc25714bfa7275bc0c3578199d1b6f014d860b69df07cc79dc833
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / log_generator_tool-1.0.1-py3-none-any.whl
| Download URL | log_generator_tool-1.0.1-py3-none-any.whl |
|---|---|
| Size | 155.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2e8d7300427354844ab56b3b252c4317bb467e65d7c19ee8a925584e4538e420
|
|
BLAKE2b-256 checksum How to use checksums |
9ab3b320eabdc22c7b2e33c821f3dddaf9512a58fe21325d5878aac0806e95e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|