Metadata-Version: 2.4
Name: loguru-kit
Version: 0.5.0
Summary: Dead simple loguru setup
Author-email: JunSeok Kim <infend@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/bestend/loguru-kit
Project-URL: Documentation, https://github.com/bestend/loguru-kit#readme
Project-URL: Repository, https://github.com/bestend/loguru-kit.git
Project-URL: Issues, https://github.com/bestend/loguru-kit/issues
Keywords: loguru,logging,fastapi,opentelemetry
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: System :: Logging
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: loguru>=0.7.0
Provides-Extra: fastapi
Requires-Dist: starlette>=0.27.0; extra == "fastapi"
Provides-Extra: otel
Requires-Dist: opentelemetry-api>=1.20.0; extra == "otel"
Provides-Extra: all
Requires-Dist: starlette>=0.27.0; extra == "all"
Requires-Dist: opentelemetry-api>=1.20.0; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: httpx>=0.24.0; extra == "dev"
Dynamic: license-file

# loguru-kit

Dead simple loguru setup.

**Language:** [한국어](./README.ko.md) | English

[![Python Version](https://img.shields.io/badge/python-3.12%2B-blue)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Tests](https://github.com/bestend/loguru-kit/actions/workflows/tests.yml/badge.svg)](https://github.com/bestend/loguru-kit/actions/workflows/tests.yml)

## Installation

```bash
pip install loguru-kit
```

## Quick Start

```python
from loguru_kit import setup, logger

setup()
logger.info("Hello!")
```

## Options

```python
setup(
    level="DEBUG",      # Log level (default: INFO)
    json=True,          # JSON output (default: False)
    intercept=True,     # Intercept stdlib logging (default: True)
    truncate=5000,      # Max message length (default: 5000)
    otel=True,          # OpenTelemetry trace injection (default: False)
)
```

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `LOGURU_LEVEL` | `INFO` | Log level |
| `LOGURU_JSON` | `false` | JSON output |
| `LOGURU_INTERCEPT` | `true` | Intercept stdlib logging |
| `LOGURU_TRUNCATE` | `5000` | Max message length |
| `LOGURU_OTEL` | `false` | OpenTelemetry integration |

Priority: code args > env vars > defaults

## FastAPI Integration

```bash
pip install loguru-kit[fastapi]
```

```python
from fastapi import FastAPI
from loguru_kit import setup
from loguru_kit.middleware import LoggingMiddleware

setup()
app = FastAPI()
app.add_middleware(LoggingMiddleware)
```

Output:
```
2025-01-17 10:30:00.123 | INFO | request | GET /api/users
2025-01-17 10:30:00.456 | INFO | response | GET /api/users | 200 | 333ms
```

## OpenTelemetry Integration

```bash
pip install loguru-kit[otel]
```

```python
from loguru_kit import setup

setup(otel=True)
# trace_id, span_id automatically injected
```

## License

MIT License - See [LICENSE](./LICENSE) for details.
