Metadata-Version: 2.4
Name: logging-hj3415
Version: 1.0.6
Summary: A logging library package built with Loguru
Keywords: example,demo
Author-email: Hyungjin Kim <hj3415@gmail.com>
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Typing :: Typed
License-File: LICENSE
Requires-Dist: loguru>=0.7

# logging-hj3415 README

`logging-hj3415`는 `loguru` 기반 공통 로깅 라이브러리입니다.  
애플리케이션 시작 시 로깅을 한 번 설정하고(`setup_logging`), 이후 모든 모듈에서 동일한 `logger`를 사용하도록 만드는 목적의 패키지입니다.

`pyproject.toml` 기준 정보:
- 패키지명: `logging-hj3415`
- 버전: `1.0.4`
- Python: `>=3.11`
- 빌드 백엔드: `flit_core`
- 의존성: `loguru>=0.7`

## 1. 프로젝트의 기능 설명

이 패키지가 제공하는 핵심 기능은 4가지입니다.

- `setup_logging(...)`: 콘솔/파일 sink를 한 번만 초기화
- `logger`: 어디서나 바로 import 해서 사용하는 공용 logger
- `reset_logging(...)`, `current_log_level()`: 런타임 로그레벨 제어
- `to_pretty_json(...)`: dict, pydantic, dataclass 등을 보기 좋은 JSON 문자열로 변환

권장 패턴:
1. 앱 진입점(`main.py`, `cli/app.py`)에서 `setup_logging()` 1회 호출
2. 서비스/도메인/어댑터 레이어에서는 `from logging_hj3415 import logger`만 사용

## 2. 프로젝트 구조 설명

```text
logging-hj3415/
├─ pyproject.toml
└─ src/logging_hj3415/
   ├─ __init__.py      # 외부 공개 API(logger, setup_logging 등)
   ├─ _setup.py        # 로깅 설정/재설정 구현
   ├─ pretty.py        # pretty JSON 유틸리티
   └─ py.typed         # typing 지원 표시
```

각 파일 역할:
- `__init__.py`: 패키지 사용자가 import 하는 진입점
- `_setup.py`: `LOG_LEVEL`, `LOG_FILE` 반영 및 sink 구성
- `pretty.py`: 로깅/디버깅용 JSON 문자열 포맷 변환

## 3. 다른 프로젝트에서 임포트해서 사용하는 예시

설치:

```bash
python -m pip install logging-hj3415
```

애플리케이션 진입점 예시:

```python
from logging_hj3415 import setup_logging, logger

setup_logging()  # 앱 시작 시 1회
logger.info("애플리케이션 시작")
```

파일 로그 포함 예시:

```python
from logging_hj3415 import setup_logging, logger

setup_logging(level="INFO", log_file="logs/app.log")
logger.warning("파일 로그도 함께 기록됩니다.")
```

다른 모듈에서 재사용:

```python
from logging_hj3415 import logger

def run_job() -> None:
    logger.info("배치 작업 시작")
```

`to_pretty_json` 예시:

```python
from logging_hj3415 import logger, to_pretty_json

payload = {"code": "005930", "result": {"ok": True}}
logger.info("result=\n{}", to_pretty_json(payload))
```

## 4. 환경변수 설정 예시

`_setup.py`에서 읽는 환경변수:
- `LOG_LEVEL`: 로그 레벨 (`DEBUG`, `INFO`, `WARNING`, `ERROR` 등)
- `LOG_FILE`: 파일 로그 경로 (선택)

예시:

```env
LOG_LEVEL=DEBUG
LOG_FILE=logs/app.log
```

동작 우선순위:
1. 환경변수(`LOG_LEVEL`, `LOG_FILE`)
2. `setup_logging(level=..., log_file=...)` 인자
3. 기본값(`INFO`, 파일 출력 없음)

