Bench Logging Handler
Python 벤치마킹 로깅 핸들러로, 구조화된 로깅, 성능 측정, 자동 스택 트레이스를 제공합니다.
주요 기능
- 내장 벤치마킹:
logging.benchstart()와logging.benchend()로 간편한 성능 측정 (현재는 시간 측정만 지원하며, 향후 메모리 사용량, CPU 사용률 등 다양한 벤치마크 지표를 추가할 예정) - 구조화된 로깅: JSON, Line, Box 등 다양한 출력 형식 지원
- 자동 스택 트레이스: 모든 로그 레벨에서 스택 트레이스 제공 가능
- 시스템 컨텍스트: 시스템 정보(PID, 호스트명, Python 버전) 자동 포함
- 읽기 쉬운 포맷: 색상과 포맷팅이 적용된 콘솔 출력
- Logging 통합: 표준 Python 로깅의
handler대체
설치
pip install bench-logging-handler
빠른 시작
import logging
from bench_logging_handler import BenchHandler, ConsoleSink
# 핸들러 설정
handler = BenchHandler(sink=ConsoleSink())
logging.getLogger().addHandler(handler)
# 일반 로깅
logging.info("애플리케이션이 시작되었습니다")
# 벤치마킹
bench_id = logging.benchstart("데이터베이스 쿼리")
# ... 실제 작업 ...
logging.benchend("쿼리 완료", bench_id)
기본 사용법
핸들러 설정
import logging
from bench_logging_handler import BenchHandler, ConsoleSink, BoxFormatter
# 기본 설정
root = logging.getLogger()
root.setLevel(logging.DEBUG)
root.addHandler(BenchHandler(
trace_levels=("DEBUG", "ERROR", "CRITICAL"), # 스택 트레이스를 포함할 레벨
sink=ConsoleSink(formatter=BoxFormatter())
))
로깅 메서드
| 메서드 | 설명 | 예시 |
|---|---|---|
logging.debug() |
디버그 메시지 | logging.debug("변수 값: %s", value) |
logging.info() |
일반 정보 | logging.info("사용자 로그인: %s", username) |
logging.warning() |
경고 메시지 | logging.warning("메모리 사용량 높음") |
logging.error() |
오류 메시지 | logging.error("데이터베이스 연결 실패") |
logging.critical() |
심각한 오류 | logging.critical("시스템 종료 중") |
벤치마킹
import logging
# 기본 벤치마킹
bench_id = logging.benchstart("파일 업로드")
# ... 파일 업로드 작업 ...
logging.benchend("업로드 완료", bench_id)
# 사용자 정의 ID와 태스크명
logging.benchstart("API 요청", bench_id="api_001", task_name="user_api")
# ... API 요청 처리 ...
logging.benchend("API 응답 완료", bench_id="api_001")
# 최소 사용법 (자동 ID 생성)
bench_id = logging.benchstart("자동 측정")
# ... 작업 ...
logging.benchend("완료", bench_id)
출력 형식 - Sink
ConsoleSink
from bench_logging_handler import BenchHandler, ConsoleSink
handler = BenchHandler(sink=ConsoleSink())
FileSink
from bench_logging_handler import BenchHandler, FileSink, JsonFormatter
handler = BenchHandler(
sink=FileSink('app.json', formatter=JsonFormatter())
)
BoxFormatter (Pretty Print)
from bench_logging_handler import BenchHandler, ConsoleSink, BoxFormatter
handler = BenchHandler(
sink=ConsoleSink(formatter=BoxFormatter())
)
고급 설정
trace_levels 옵션
스택 트레이스를 표시할 로그 레벨을 지정합니다:
# 특정 레벨만
BenchHandler(trace_levels=("ERROR", "CRITICAL"))
# 모든 레벨
BenchHandler(trace_levels=("DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"))
# 벤치마크만
BenchHandler(trace_levels=("BENCH",))
# 벤치마크 포함
BenchHandler(trace_levels=("ERROR", "CRITICAL", "BENCH"))
다중 싱크
from bench_logging_handler import BenchHandler, ConsoleSink, FileSink
# 콘솔과 파일에 동시 출력
console_handler = BenchHandler(sink=ConsoleSink())
file_handler = BenchHandler(sink=FileSink('app.json'))
logging.getLogger().addHandler(console_handler)
logging.getLogger().addHandler(file_handler)
로거별 다른 설정
import logging
from bench_logging_handler import BenchHandler, ConsoleSink, FileSink, BoxFormatter
# 각 로거별로 다른 핸들러 설정
app_logger = logging.getLogger("app")
db_logger = logging.getLogger("database")
api_logger = logging.getLogger("api")
app_logger.addHandler(BenchHandler(sink=ConsoleSink(formatter=BoxFormatter())))
db_logger.addHandler(BenchHandler(sink=FileSink('database.json')))
api_logger.addHandler(BenchHandler(sink=FileSink('api.json')))
향후 업데이트 계획
벤치마크 지표 추가
- 메모리 사용량 측정: 프로세스 메모리 사용량 추적
- CPU 사용률 측정: CPU 사용률 모니터링
- 네트워크 I/O 측정: 네트워크 트래픽 측정
- 디스크 I/O 측정: 파일 시스템 I/O 성능 추적
- 사용자 정의 메트릭: 커스텀 벤치마크 지표 지원
Web 기반 대시보드
- 실시간 모니터링: 라이브 성능 데이터 시각화
- 히스토리컬 데이터: 과거 성능 데이터 분석 및 차트
- 알림 시스템: 성능 임계값 초과 시 알림
- 다중 프로젝트 지원: 여러 애플리케이션 통합 모니터링
- RESTful API: 대시보드 데이터 접근용 API 제공
요구사항
- Python 3.8+
- psutil (시스템 정보용)
라이선스
MIT License
Metadata
Release files for bench-logging-handler 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bench_logging_handler-0.1.0.tar.gz | 17.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bench_logging_handler-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.6 kB
Release files / bench_logging_handler-0.1.0.tar.gz
| Download URL | bench_logging_handler-0.1.0.tar.gz |
|---|---|
| Size | 17.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5c4ca2fd4b9543d1b89ac111f8b6a47d27b67812f27c220b48b6e30edee9e04b
|
|
BLAKE2b-256 checksum How to use checksums |
7fe3bdaf82ec3142829f71970158be80035597a5a4d1bbb02f1ec76cb2b7013e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / bench_logging_handler-0.1.0-py3-none-any.whl
| Download URL | bench_logging_handler-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5c66688bb1315d3251cf84774ea921fb8b4b5742af48527440e967f2f98878ae
|
|
BLAKE2b-256 checksum How to use checksums |
84daf0b72fefd9aa756cbe47d214a974d288c57a2397f1f0605f7e3eb708e53e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|