fapilog


Namefapilog JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryProduction-ready structured logging for FastAPI with trace IDs, async queues, and observability integration
upload_time2025-07-21 23:32:57
maintainerNone
docs_urlNone
authorChris Haste
requires_python>=3.8
licenseApache-2.0
keywords asyncio cloud-native context correlation distributed fastapi json logging loki microservices middleware monitoring observability opentelemetry production structured tracing
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            # FastAPI-Logger (`fapilog`)

![CI](https://github.com/chris-haste/fastapi-logger/actions/workflows/ci.yml/badge.svg)
![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)
![Python](https://img.shields.io/badge/python-3.8+-blue.svg)
![PyPI](https://img.shields.io/badge/pypi-v/fapilog)

**Production-ready structured logging for FastAPI with trace IDs, async queues, and observability integration.**

`fapilog` delivers enterprise-grade logging with zero frictionβ€”JSON logs, distributed tracing, async-safe queues, and observability hooksβ€”so every microservice in your stack emits consistent, query-friendly events from day one.

> **Package Info**: This project is published to PyPI as `fapilog` and developed in the `fastapi-logger` repository.

---

## ✨ Why Choose fapilog?

| Feature                       | fapilog Advantage                                                                                           |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------- |
| **Zero-friction setup**       | One-liner `configure_logging()`β€”no YAML gymnastics or copy-pasted boilerplate.                              |
| **Production-ready**          | Built for high-traffic microservices with async queues, distributed tracing, and observability integration. |
| **Structured by default**     | JSON logs (Docker & cloud-native friendly) with pretty console rendering for local development.             |
| **Context propagation**       | Trace ID, span ID, request path, status, user ID flow through `contextvars` without polluting your code.    |
| **Async & non-blocking**      | Background queue + worker ensures log writing never blocks the event loop, even under high RPS.             |
| **Enterprise security**       | Built-in PII redaction, field-level allow/deny lists, GDPR-friendly opt-outs, and audit trails.             |
| **Observability integration** | Native OpenTelemetry spans, Prometheus/OTLP metrics, and correlation IDs across logs, traces, and metrics.  |
| **Container architecture**    | Clean dependency injection with multiple configurations, thread safety, and excellent testability.          |
| **Extensible architecture**   | Pluggable sinks (stdout, files, Loki, HTTP) and custom enrichers with just a few lines of code.             |
| **Developer experience**      | Pytest fixtures, comprehensive examples, and detailed documentation for rapid adoption.                     |

---

## πŸ“Š Comparison with Alternatives

| Feature                    | fapilog                 | fastapi-logger   | structlog        | Basic logging    |
| -------------------------- | ----------------------- | ---------------- | ---------------- | ---------------- |
| **Zero-config setup**      | βœ… One-liner            | ❌ Manual setup  | ❌ Manual setup  | ❌ Manual setup  |
| **Async-safe**             | βœ… Background queue     | ❌ Blocking      | ❌ Blocking      | ❌ Blocking      |
| **Distributed tracing**    | βœ… Native support       | ❌ Manual        | ❌ Manual        | ❌ Manual        |
| **PII redaction**          | βœ… Built-in             | ❌ Manual        | ❌ Manual        | ❌ Manual        |
| **Observability hooks**    | βœ… OpenTelemetry        | ❌ None          | ❌ None          | ❌ None          |
| **Container architecture** | βœ… Dependency injection | ❌ Global state  | ❌ Global state  | ❌ Global state  |
| **Multiple configs**       | βœ… Isolated containers  | ❌ Single config | ❌ Single config | ❌ Single config |
| **Production-ready**       | βœ… Enterprise features  | ⚠️ Basic         | ⚠️ Basic         | ❌ Basic         |
| **FastAPI integration**    | βœ… Native middleware    | βœ… Native        | ❌ Manual        | ❌ Manual        |

---

## πŸš€ Quick Start

### Installation

```bash
pip install fapilog
```

For additional features, install optional dependencies:

```bash
# With Loki support
pip install fapilog[loki]

# With FastAPI integration helpers
pip install fapilog[fastapi]

# With system metrics support
pip install fapilog[metrics]

# For development
pip install fapilog[dev]
```

#### Version Pinning

For production deployments, we recommend pinning the version to ensure reproducible builds:

```bash
# Production (allows patch updates)
pip install fapilog~=0.1.0

# Strict reproducibility (exact version)
pip install fapilog==0.1.0
```

#### Python Compatibility

`fapilog` requires Python 3.8 or higher and is compatible with Python 3.8, 3.9, 3.10, 3.11, and 3.12.

### Basic Usage

After installation, you can start logging immediately:

```python
from fapilog import configure_logging, log

configure_logging()
log.info("Hello from fapilog!")
```

### FastAPI Integration

```python
# main.py
from fastapi import FastAPI
from fapilog import configure_logging, log

configure_logging()              # instant logging superpowers

app = FastAPI()

@app.get("/ping")
async def ping():
    log.info("ping_hit")         # JSON log with trace_id, path, method, etc.
    return {"pong": True}
```

Run the service:

```bash
uvicorn app.main:app --reload
```

Local console shows colourised logs; in production the same call emits compact JSON suitable for Loki, Cloud Logging, or ELK.

### Quick Configuration

**Environment variables for common setups:**

```bash
# Development
export FAPILOG_LEVEL=DEBUG
export FAPILOG_JSON_CONSOLE=pretty

# Production
export FAPILOG_LEVEL=INFO
export FAPILOG_SINKS=stdout,file:///var/log/app.log,loki://loki:3100
export FAPILOG_JSON_CONSOLE=json
export FAPILOG_REDACT_PATTERNS=password,token,secret
```

**Programmatic configuration:**

```python
from fapilog.settings import LoggingSettings
from fapilog import configure_logging

settings = LoggingSettings(
    level="INFO",
    sinks=["stdout", "file:///var/log/app.log"],
    redact_patterns=["password", "token"],
    queue_enabled=True
)
logger = configure_logging(settings=settings)
```

πŸ“– **For complete configuration reference, see [Configuration Guide](https://fapilog.readthedocs.io/en/latest/config.html) or [docs/config.md](docs/config.md)**

---

## πŸ“– Documentation

### πŸ“š Complete Documentation

- **[πŸ“š ReadTheDocs](https://fapilog.readthedocs.io/)** - Complete documentation with search
- **[Configuration Guide](docs/config.md)** - All 22 configuration settings with examples
- **[API Reference](docs/api-reference.md)** - Complete technical reference
- **[User Guide](docs/user-guide.md)** - Step-by-step tutorials and best practices
- **[Examples](examples/)** - Real-world usage patterns and recipes
- **[Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions
- **[FAQ](docs/faq.md)** - Frequently asked questions

### Quick Navigation

**For New Users:**

- [Introduction](docs/introduction.md) β†’ [Primer](docs/primer.md) β†’ [Quickstart](docs/quickstart.md)

**For Developers:**

- [Configuration Guide](docs/config.md) β†’ [API Reference](docs/api-reference.md) β†’ [Examples](examples/)

**For Production:**

- [User Guide - Production Deployment](docs/user-guide.md#production-deployment) β†’ [Troubleshooting](docs/troubleshooting.md)

---

## πŸ›  Development Setup

```bash
git clone https://github.com/chris-haste/fastapi-logger.git
cd fastapi-logger
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
hatch run test
```

> **Repository vs Package Name**: This project is developed in the `fastapi-logger` repository but published to PyPI as `fapilog`. The repository name is descriptive of the project's purpose, while the package name is concise and memorable.

> **Note:** The test suite enforces a minimum coverage threshold of 85% using `pytest-cov`. If coverage falls below this threshold, the test run will fail locally and in CI. To see a detailed coverage report, use `hatch run test-cov` or inspect the HTML report in `htmlcov/` after running tests.

### Development Commands

- `hatch run lint` - Run Ruff linter
- `hatch run typecheck` - Run MyPy type checker
- `hatch run test` - Run pytest test suite
- `hatch run test-cov` - Run tests with coverage report
- `hatch run test-queue-load` - Run load testing for logging queue

### Pre-commit Hooks

This project uses pre-commit hooks to ensure code quality. The hooks run automatically on staged files and include:

- **Ruff** - Linting and code formatting
- **MyPy** - Type checking
- **Vulture** - Dead code detection

**Setup:**

```bash
# Install pre-commit (included in dev dependencies)
pip install -e ".[dev]"

# Install the git hooks
pre-commit install

# Run manually on all files
pre-commit run --all-files
```

**Note:** The pre-commit hooks will run automatically on staged files when you commit. You can also run them manually using the commands above.

---

## 🀝 Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for detailed information on:

- Setting up your development environment
- Code style and testing guidelines
- Commit message conventions
- Pull request process
- Release procedures

---

## πŸ—ΊοΈ Roadmap

- [ ] Refactor to remove dependency on structlog
- [ ] OpenTelemetry span auto-capture
- [ ] SQLAlchemy slow-query detector
- [ ] Redis/RabbitMQ context propagation helpers
- [ ] Live log-level toggle endpoint (`/admin/log-level`)
- [ ] Kinesis / PubSub sinks

Contributions welcomeβ€”see **`CONTRIBUTING.md`** for guidelines.

---

## 🀝 License

Apache 2.0 β€” free for commercial and open-source use.

> _FastAPI-Logger is built for high-throughput async APIs, but the core modules are framework-agnosticβ€”use them in Celery workers, scripts, or any structlog pipeline with minimal tweaks._

## πŸ“‹ Changelog

See [CHANGELOG.md](CHANGELOG.md) for a complete history of changes and releases.

---

## πŸ“Š Key Features

### Core Capabilities

- **Structured JSON logging** with automatic field enrichment
- **Distributed tracing** with trace ID propagation across services
- **Async-safe logging queue** that never blocks your application
- **Multiple sink support** (stdout, file, Loki, custom)
- **Automatic PII redaction** with configurable patterns
- **Container architecture** for isolated configurations and testing
- **FastAPI middleware** for automatic request context enrichment
- **Resource metrics** (memory, CPU) with optional psutil integration
- **Custom enrichers** for application-specific metadata
- **Comprehensive error handling** with graceful degradation

### Production Features

- **High-performance async queue** with configurable overflow strategies
- **Automatic log flushing** on application shutdown
- **Load testing tools** for queue performance validation
- **Prometheus metrics** for monitoring logging health
- **Thread-safe containers** for concurrent access
- **Graceful error handling** with detailed exception types
- **Environment-driven configuration** (12-factor app compliant)

### Developer Experience

- **Zero-configuration setup** with sensible defaults
- **Comprehensive documentation** with examples and tutorials
- **Type hints** throughout the codebase
- **Extensive test coverage** (85% minimum threshold)
- **Pre-commit hooks** for code quality
- **Load testing tools** for performance validation
- **Multiple configuration patterns** for different environments

πŸ“– **For detailed feature documentation, see [User Guide](docs/user-guide.md) and [API Reference](docs/api-reference.md)**

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "fapilog",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "asyncio, cloud-native, context, correlation, distributed, fastapi, json, logging, loki, microservices, middleware, monitoring, observability, opentelemetry, production, structured, tracing",
    "author": "Chris Haste",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/c0/2e/79e017d21fb217b82f3eb5dab84186b799cd8a95ee9a52b58202e86bfae1/fapilog-0.2.0.tar.gz",
    "platform": null,
    "description": "# FastAPI-Logger (`fapilog`)\n\n![CI](https://github.com/chris-haste/fastapi-logger/actions/workflows/ci.yml/badge.svg)\n![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)\n![Python](https://img.shields.io/badge/python-3.8+-blue.svg)\n![PyPI](https://img.shields.io/badge/pypi-v/fapilog)\n\n**Production-ready structured logging for FastAPI with trace IDs, async queues, and observability integration.**\n\n`fapilog` delivers enterprise-grade logging with zero friction\u2014JSON logs, distributed tracing, async-safe queues, and observability hooks\u2014so every microservice in your stack emits consistent, query-friendly events from day one.\n\n> **Package Info**: This project is published to PyPI as `fapilog` and developed in the `fastapi-logger` repository.\n\n---\n\n## \u2728 Why Choose fapilog?\n\n| Feature                       | fapilog Advantage                                                                                           |\n| ----------------------------- | ----------------------------------------------------------------------------------------------------------- |\n| **Zero-friction setup**       | One-liner `configure_logging()`\u2014no YAML gymnastics or copy-pasted boilerplate.                              |\n| **Production-ready**          | Built for high-traffic microservices with async queues, distributed tracing, and observability integration. |\n| **Structured by default**     | JSON logs (Docker & cloud-native friendly) with pretty console rendering for local development.             |\n| **Context propagation**       | Trace ID, span ID, request path, status, user ID flow through `contextvars` without polluting your code.    |\n| **Async & non-blocking**      | Background queue + worker ensures log writing never blocks the event loop, even under high RPS.             |\n| **Enterprise security**       | Built-in PII redaction, field-level allow/deny lists, GDPR-friendly opt-outs, and audit trails.             |\n| **Observability integration** | Native OpenTelemetry spans, Prometheus/OTLP metrics, and correlation IDs across logs, traces, and metrics.  |\n| **Container architecture**    | Clean dependency injection with multiple configurations, thread safety, and excellent testability.          |\n| **Extensible architecture**   | Pluggable sinks (stdout, files, Loki, HTTP) and custom enrichers with just a few lines of code.             |\n| **Developer experience**      | Pytest fixtures, comprehensive examples, and detailed documentation for rapid adoption.                     |\n\n---\n\n## \ud83d\udcca Comparison with Alternatives\n\n| Feature                    | fapilog                 | fastapi-logger   | structlog        | Basic logging    |\n| -------------------------- | ----------------------- | ---------------- | ---------------- | ---------------- |\n| **Zero-config setup**      | \u2705 One-liner            | \u274c Manual setup  | \u274c Manual setup  | \u274c Manual setup  |\n| **Async-safe**             | \u2705 Background queue     | \u274c Blocking      | \u274c Blocking      | \u274c Blocking      |\n| **Distributed tracing**    | \u2705 Native support       | \u274c Manual        | \u274c Manual        | \u274c Manual        |\n| **PII redaction**          | \u2705 Built-in             | \u274c Manual        | \u274c Manual        | \u274c Manual        |\n| **Observability hooks**    | \u2705 OpenTelemetry        | \u274c None          | \u274c None          | \u274c None          |\n| **Container architecture** | \u2705 Dependency injection | \u274c Global state  | \u274c Global state  | \u274c Global state  |\n| **Multiple configs**       | \u2705 Isolated containers  | \u274c Single config | \u274c Single config | \u274c Single config |\n| **Production-ready**       | \u2705 Enterprise features  | \u26a0\ufe0f Basic         | \u26a0\ufe0f Basic         | \u274c Basic         |\n| **FastAPI integration**    | \u2705 Native middleware    | \u2705 Native        | \u274c Manual        | \u274c Manual        |\n\n---\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install fapilog\n```\n\nFor additional features, install optional dependencies:\n\n```bash\n# With Loki support\npip install fapilog[loki]\n\n# With FastAPI integration helpers\npip install fapilog[fastapi]\n\n# With system metrics support\npip install fapilog[metrics]\n\n# For development\npip install fapilog[dev]\n```\n\n#### Version Pinning\n\nFor production deployments, we recommend pinning the version to ensure reproducible builds:\n\n```bash\n# Production (allows patch updates)\npip install fapilog~=0.1.0\n\n# Strict reproducibility (exact version)\npip install fapilog==0.1.0\n```\n\n#### Python Compatibility\n\n`fapilog` requires Python 3.8 or higher and is compatible with Python 3.8, 3.9, 3.10, 3.11, and 3.12.\n\n### Basic Usage\n\nAfter installation, you can start logging immediately:\n\n```python\nfrom fapilog import configure_logging, log\n\nconfigure_logging()\nlog.info(\"Hello from fapilog!\")\n```\n\n### FastAPI Integration\n\n```python\n# main.py\nfrom fastapi import FastAPI\nfrom fapilog import configure_logging, log\n\nconfigure_logging()              # instant logging superpowers\n\napp = FastAPI()\n\n@app.get(\"/ping\")\nasync def ping():\n    log.info(\"ping_hit\")         # JSON log with trace_id, path, method, etc.\n    return {\"pong\": True}\n```\n\nRun the service:\n\n```bash\nuvicorn app.main:app --reload\n```\n\nLocal console shows colourised logs; in production the same call emits compact JSON suitable for Loki, Cloud Logging, or ELK.\n\n### Quick Configuration\n\n**Environment variables for common setups:**\n\n```bash\n# Development\nexport FAPILOG_LEVEL=DEBUG\nexport FAPILOG_JSON_CONSOLE=pretty\n\n# Production\nexport FAPILOG_LEVEL=INFO\nexport FAPILOG_SINKS=stdout,file:///var/log/app.log,loki://loki:3100\nexport FAPILOG_JSON_CONSOLE=json\nexport FAPILOG_REDACT_PATTERNS=password,token,secret\n```\n\n**Programmatic configuration:**\n\n```python\nfrom fapilog.settings import LoggingSettings\nfrom fapilog import configure_logging\n\nsettings = LoggingSettings(\n    level=\"INFO\",\n    sinks=[\"stdout\", \"file:///var/log/app.log\"],\n    redact_patterns=[\"password\", \"token\"],\n    queue_enabled=True\n)\nlogger = configure_logging(settings=settings)\n```\n\n\ud83d\udcd6 **For complete configuration reference, see [Configuration Guide](https://fapilog.readthedocs.io/en/latest/config.html) or [docs/config.md](docs/config.md)**\n\n---\n\n## \ud83d\udcd6 Documentation\n\n### \ud83d\udcda Complete Documentation\n\n- **[\ud83d\udcda ReadTheDocs](https://fapilog.readthedocs.io/)** - Complete documentation with search\n- **[Configuration Guide](docs/config.md)** - All 22 configuration settings with examples\n- **[API Reference](docs/api-reference.md)** - Complete technical reference\n- **[User Guide](docs/user-guide.md)** - Step-by-step tutorials and best practices\n- **[Examples](examples/)** - Real-world usage patterns and recipes\n- **[Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions\n- **[FAQ](docs/faq.md)** - Frequently asked questions\n\n### Quick Navigation\n\n**For New Users:**\n\n- [Introduction](docs/introduction.md) \u2192 [Primer](docs/primer.md) \u2192 [Quickstart](docs/quickstart.md)\n\n**For Developers:**\n\n- [Configuration Guide](docs/config.md) \u2192 [API Reference](docs/api-reference.md) \u2192 [Examples](examples/)\n\n**For Production:**\n\n- [User Guide - Production Deployment](docs/user-guide.md#production-deployment) \u2192 [Troubleshooting](docs/troubleshooting.md)\n\n---\n\n## \ud83d\udee0 Development Setup\n\n```bash\ngit clone https://github.com/chris-haste/fastapi-logger.git\ncd fastapi-logger\npython -m venv .venv && source .venv/bin/activate\npip install -e \".[dev]\"\nhatch run test\n```\n\n> **Repository vs Package Name**: This project is developed in the `fastapi-logger` repository but published to PyPI as `fapilog`. The repository name is descriptive of the project's purpose, while the package name is concise and memorable.\n\n> **Note:** The test suite enforces a minimum coverage threshold of 85% using `pytest-cov`. If coverage falls below this threshold, the test run will fail locally and in CI. To see a detailed coverage report, use `hatch run test-cov` or inspect the HTML report in `htmlcov/` after running tests.\n\n### Development Commands\n\n- `hatch run lint` - Run Ruff linter\n- `hatch run typecheck` - Run MyPy type checker\n- `hatch run test` - Run pytest test suite\n- `hatch run test-cov` - Run tests with coverage report\n- `hatch run test-queue-load` - Run load testing for logging queue\n\n### Pre-commit Hooks\n\nThis project uses pre-commit hooks to ensure code quality. The hooks run automatically on staged files and include:\n\n- **Ruff** - Linting and code formatting\n- **MyPy** - Type checking\n- **Vulture** - Dead code detection\n\n**Setup:**\n\n```bash\n# Install pre-commit (included in dev dependencies)\npip install -e \".[dev]\"\n\n# Install the git hooks\npre-commit install\n\n# Run manually on all files\npre-commit run --all-files\n```\n\n**Note:** The pre-commit hooks will run automatically on staged files when you commit. You can also run them manually using the commands above.\n\n---\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for detailed information on:\n\n- Setting up your development environment\n- Code style and testing guidelines\n- Commit message conventions\n- Pull request process\n- Release procedures\n\n---\n\n## \ud83d\uddfa\ufe0f Roadmap\n\n- [ ] Refactor to remove dependency on structlog\n- [ ] OpenTelemetry span auto-capture\n- [ ] SQLAlchemy slow-query detector\n- [ ] Redis/RabbitMQ context propagation helpers\n- [ ] Live log-level toggle endpoint (`/admin/log-level`)\n- [ ] Kinesis / PubSub sinks\n\nContributions welcome\u2014see **`CONTRIBUTING.md`** for guidelines.\n\n---\n\n## \ud83e\udd1d License\n\nApache 2.0 \u2014 free for commercial and open-source use.\n\n> _FastAPI-Logger is built for high-throughput async APIs, but the core modules are framework-agnostic\u2014use them in Celery workers, scripts, or any structlog pipeline with minimal tweaks._\n\n## \ud83d\udccb Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a complete history of changes and releases.\n\n---\n\n## \ud83d\udcca Key Features\n\n### Core Capabilities\n\n- **Structured JSON logging** with automatic field enrichment\n- **Distributed tracing** with trace ID propagation across services\n- **Async-safe logging queue** that never blocks your application\n- **Multiple sink support** (stdout, file, Loki, custom)\n- **Automatic PII redaction** with configurable patterns\n- **Container architecture** for isolated configurations and testing\n- **FastAPI middleware** for automatic request context enrichment\n- **Resource metrics** (memory, CPU) with optional psutil integration\n- **Custom enrichers** for application-specific metadata\n- **Comprehensive error handling** with graceful degradation\n\n### Production Features\n\n- **High-performance async queue** with configurable overflow strategies\n- **Automatic log flushing** on application shutdown\n- **Load testing tools** for queue performance validation\n- **Prometheus metrics** for monitoring logging health\n- **Thread-safe containers** for concurrent access\n- **Graceful error handling** with detailed exception types\n- **Environment-driven configuration** (12-factor app compliant)\n\n### Developer Experience\n\n- **Zero-configuration setup** with sensible defaults\n- **Comprehensive documentation** with examples and tutorials\n- **Type hints** throughout the codebase\n- **Extensive test coverage** (85% minimum threshold)\n- **Pre-commit hooks** for code quality\n- **Load testing tools** for performance validation\n- **Multiple configuration patterns** for different environments\n\n\ud83d\udcd6 **For detailed feature documentation, see [User Guide](docs/user-guide.md) and [API Reference](docs/api-reference.md)**\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Production-ready structured logging for FastAPI with trace IDs, async queues, and observability integration",
    "version": "0.2.0",
    "project_urls": {
        "Bug-Tracker": "https://github.com/chris-haste/fastapi-logger/issues",
        "Documentation": "https://fapilog.readthedocs.io/",
        "Homepage": "https://github.com/chris-haste/fastapi-logger",
        "PyPI Package": "https://pypi.org/project/fapilog/",
        "Repository": "https://github.com/chris-haste/fastapi-logger"
    },
    "split_keywords": [
        "asyncio",
        " cloud-native",
        " context",
        " correlation",
        " distributed",
        " fastapi",
        " json",
        " logging",
        " loki",
        " microservices",
        " middleware",
        " monitoring",
        " observability",
        " opentelemetry",
        " production",
        " structured",
        " tracing"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "10b19187289919ac609cc561673f9654eb118f1536474c2b13b944093f6f83c4",
                "md5": "f3444a22bea67ed93f73872d99749577",
                "sha256": "6df052f4bd3b3c70ba27d643f1d1c62d7a4af601776a0a048921c741f8f18c13"
            },
            "downloads": -1,
            "filename": "fapilog-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f3444a22bea67ed93f73872d99749577",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 57493,
            "upload_time": "2025-07-21T23:32:54",
            "upload_time_iso_8601": "2025-07-21T23:32:54.354879Z",
            "url": "https://files.pythonhosted.org/packages/10/b1/9187289919ac609cc561673f9654eb118f1536474c2b13b944093f6f83c4/fapilog-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c02e79e017d21fb217b82f3eb5dab84186b799cd8a95ee9a52b58202e86bfae1",
                "md5": "14972e68fad5346fdf98d182c6aff2d3",
                "sha256": "304f03d21ba8a34bf12eb4b711ec9fa0f278837d5b380cf547566d3ce09e57ff"
            },
            "downloads": -1,
            "filename": "fapilog-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "14972e68fad5346fdf98d182c6aff2d3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 49206,
            "upload_time": "2025-07-21T23:32:57",
            "upload_time_iso_8601": "2025-07-21T23:32:57.316240Z",
            "url": "https://files.pythonhosted.org/packages/c0/2e/79e017d21fb217b82f3eb5dab84186b799cd8a95ee9a52b58202e86bfae1/fapilog-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-21 23:32:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "chris-haste",
    "github_project": "fastapi-logger",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "fapilog"
}
        
Elapsed time: 0.81269s