Skip to main content

spakky-logging

Spakky Framework를 위한 구조화 로깅 시스템입니다. Context-local log binding, formatter 설정, AOP 기반 메서드 호출 로깅, PostProcessor 기반 자동 설정을 제공합니다.

설치

pip install spakky-logging

빠른 시작

1. 플러그인 자동 등록

spakky-loggingload_plugins()를 통해 자동으로 로드됩니다.

app = SpakkyApplication(ApplicationContext()).load_plugins().scan(my_app).start()

2. @logged로 메서드 표시

from spakky.plugins.logging import logged

class UserService:
    @logged()
    async def create_user(self, name: str, password: str) -> User:
        ...

3. 설정(선택)

LoggingConfig로 기본값을 override합니다.

LoggingConfig@Configuration Pod로 로드되며, pydantic-settings를 통해 SPAKKY_LOGGING__* 환경변수를 읽습니다.

export SPAKKY_LOGGING__LEVEL=10
export SPAKKY_LOGGING__FORMAT=json
export SPAKKY_LOGGING__MASK_KEYS='["password", "token", "secret"]'
export SPAKKY_LOGGING__SLOW_THRESHOLD_MS=500

4. LogContext 전파

모든 log record에 자동 포함될 contextual key-value pair를 바인딩합니다.

from spakky.plugins.logging import LogContext

LogContext.bind(request_id="req-123", user_id="u-456")

with LogContext.scope(trace_id="t-789"):
    # 이 block 안의 모든 log는 trace_id를 포함
    ...

주요 기능

기능 설명
@logged() annotation AOP 기반 method call/result/error 자동 logging
LogContext contextvars 기반 structured context 전파
ContextInjectingFilter 모든 LogRecord에 LogContext value 주입
SpakkyTextFormatter pipe로 구분된 text format
SpakkyJsonFormatter line당 JSON object 하나
SpakkyPrettyFormatter 개발용 ANSI color multi-column format
LoggingConfig 중앙 logging configuration용 @Configuration pod
LoggingSetupPostProcessor application start 시 root logger 자동 설정
민감 데이터 masking log output에서 password, token, secret 등을 masking
느린 호출 감지 method 실행 시간이 threshold를 넘으면 warning 출력
결과 truncation 긴 return value를 log output에서 잘라냄

개발 검증

패키지 단위 검증은 해당 패키지 디렉토리에서 실행합니다.

uv run ruff format .
uv run ruff check .
uv run pyrefly check
uv run pytest

pytest는 각 패키지 pyproject.toml의 coverage 설정을 사용합니다.

라이선스

MIT License

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spakky_logging-6.13.0.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spakky_logging-6.13.0-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file spakky_logging-6.13.0.tar.gz.

File metadata

  • Download URL: spakky_logging-6.13.0.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for spakky_logging-6.13.0.tar.gz
Algorithm Hash digest
SHA256 786b214f3b508a55764e3ad2fe401a6d9378073277f5bdb23a4bcefadd508531
MD5 d2f58e78026652caf717cc5df89cad26
BLAKE2b-256 d37685fb94558cbeedc87b3a56a7b6b2081b6d341a2d4a3337f202d66b8a29d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for spakky_logging-6.13.0.tar.gz:

Publisher: release.yml on E5presso/spakky-framework

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file spakky_logging-6.13.0-py3-none-any.whl.

File metadata

  • Download URL: spakky_logging-6.13.0-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for spakky_logging-6.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7113f3c38e724bd81bdc50dfd24f15bc02bbbcb86289eca6d206b9d8a47e78ec
MD5 3aaa7c6800a46a967de8f9d1d3d83b5a
BLAKE2b-256 1c6f59dc8c81b6c899d3339d7eac2354c61226ad4a2b9ac004ba479a4a5d2b51

See more details on using hashes here.

Provenance

The following attestation bundles were made for spakky_logging-6.13.0-py3-none-any.whl:

Publisher: release.yml on E5presso/spakky-framework

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page