Structured logging system for Spakky Framework
Project description
spakky-logging
Spakky Framework를 위한 구조화 로깅 시스템입니다. contextvars 기반 로그 컨텍스트 전파, 설정 가능한 formatter(Text, JSON, Pretty), AOP 기반 메서드 호출 로깅, PostProcessor 기반 자동 설정을 제공합니다.
설치
pip install spakky-logging
빠른 시작
1. 플러그인 자동 등록
spakky-logging은 load_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합니다.
from spakky.plugins.logging import LoggingConfig, LogFormat
config = LoggingConfig(
level="DEBUG",
format=LogFormat.JSON,
mask_keys=frozenset({"password", "token", "secret"}),
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 propagation |
ContextInjectingFilter |
모든 LogRecord에 LogContext value 주입 |
SpakkyTextFormatter |
pipe-separated text format |
SpakkyJsonFormatter |
line당 JSON object 하나 |
SpakkyPrettyFormatter |
개발용 ANSI-colored multi-column format |
LoggingConfig |
중앙 logging configuration용 @Configuration pod |
LoggingSetupPostProcessor |
application start 시 root logger 자동 설정 |
| 민감 데이터 masking | log output에서 password, token, secret 등을 masking |
| 느린 호출 감지 | method execution이 threshold를 넘으면 warning 출력 |
| 결과 truncation | 긴 return value를 log output에서 truncate |
라이선스
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spakky_logging-6.5.0.tar.gz.
File metadata
- Download URL: spakky_logging-6.5.0.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5a58f1d86655894f57583376a283ea37a92356c97cdb4b673ee09f66487c7c5
|
|
| MD5 |
b7745421b2539e19a025360681480a7d
|
|
| BLAKE2b-256 |
beecd94a88be674f5305127e1d4dcdafdc7a29cb9f3b1a295cac3d5c381bbd05
|
Provenance
The following attestation bundles were made for spakky_logging-6.5.0.tar.gz:
Publisher:
release.yml on E5presso/spakky-framework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spakky_logging-6.5.0.tar.gz -
Subject digest:
e5a58f1d86655894f57583376a283ea37a92356c97cdb4b673ee09f66487c7c5 - Sigstore transparency entry: 1437042308
- Sigstore integration time:
-
Permalink:
E5presso/spakky-framework@86c1d43bdc948ac432f27efeeeb2b56692d18ee4 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/E5presso
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86c1d43bdc948ac432f27efeeeb2b56692d18ee4 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file spakky_logging-6.5.0-py3-none-any.whl.
File metadata
- Download URL: spakky_logging-6.5.0-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13e261dc7dc3f69345b55a0763b64b1b31cb33371240dc074fe90bfd945e29a7
|
|
| MD5 |
adcf104c6bd75c057f41d3c462ebbe0d
|
|
| BLAKE2b-256 |
03c84864cb49c1fdcbd7e0e8430de3fa76a252f32df465ba0ebcf4ed076da831
|
Provenance
The following attestation bundles were made for spakky_logging-6.5.0-py3-none-any.whl:
Publisher:
release.yml on E5presso/spakky-framework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
spakky_logging-6.5.0-py3-none-any.whl -
Subject digest:
13e261dc7dc3f69345b55a0763b64b1b31cb33371240dc074fe90bfd945e29a7 - Sigstore transparency entry: 1437042313
- Sigstore integration time:
-
Permalink:
E5presso/spakky-framework@86c1d43bdc948ac432f27efeeeb2b56692d18ee4 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/E5presso
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@86c1d43bdc948ac432f27efeeeb2b56692d18ee4 -
Trigger Event:
workflow_dispatch
-
Statement type: