Metadata-Version: 2.4
Name: lumberjack_sdk
Version: 2.0.0.dev2
Summary: The Lumberjack Python SDK
Project-URL: Homepage, https://github.com/treebeardhq/lumberjack-sdk-python
Project-URL: Bug Tracker, https://github.com/treebeardhq/lumberjack-sdk-python/issues
Author-email: George Mayer <george@treebeardhq.com>
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.9
Requires-Dist: opentelemetry-instrumentation-logging>=0.48b0
Requires-Dist: opentelemetry-sdk>=1.27.0
Requires-Dist: opentelemetry-semantic-conventions>=0.48b0
Requires-Dist: termcolor>=2.0.0
Provides-Extra: dev
Requires-Dist: black>=23.0.0; extra == 'dev'
Requires-Dist: build>=1.2.2; extra == 'dev'
Requires-Dist: fastapi>=0.100.0; extra == 'dev'
Requires-Dist: freezegun>=1.5.2; extra == 'dev'
Requires-Dist: grpcio-tools>=1.60.0; extra == 'dev'
Requires-Dist: grpcio>=1.60.0; extra == 'dev'
Requires-Dist: mcp>=1.0.0; extra == 'dev'
Requires-Dist: mypy>=1.0.0; extra == 'dev'
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.27.0; extra == 'dev'
Requires-Dist: opentelemetry-instrumentation-django>=0.48b0; extra == 'dev'
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.45b0; extra == 'dev'
Requires-Dist: opentelemetry-instrumentation-flask>=0.48b0; extra == 'dev'
Requires-Dist: opentelemetry-proto>=1.27.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: requests>=2.28.0; extra == 'dev'
Requires-Dist: ruff>=0.0.290; extra == 'dev'
Requires-Dist: types-requests>=2.32.0; extra == 'dev'
Requires-Dist: uvicorn>=0.25.0; extra == 'dev'
Requires-Dist: websockets>=12.0; extra == 'dev'
Provides-Extra: django
Requires-Dist: opentelemetry-instrumentation-django>=0.48b0; extra == 'django'
Provides-Extra: fastapi
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.45b0; extra == 'fastapi'
Provides-Extra: flask
Requires-Dist: opentelemetry-instrumentation-flask>=0.48b0; extra == 'flask'
Provides-Extra: local-server
Requires-Dist: fastapi>=0.100.0; extra == 'local-server'
Requires-Dist: grpcio-tools>=1.60.0; extra == 'local-server'
Requires-Dist: grpcio>=1.60.0; extra == 'local-server'
Requires-Dist: mcp>=1.0.0; extra == 'local-server'
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.27.0; extra == 'local-server'
Requires-Dist: opentelemetry-proto>=1.27.0; extra == 'local-server'
Requires-Dist: requests>=2.28.0; extra == 'local-server'
Requires-Dist: uvicorn>=0.25.0; extra == 'local-server'
Requires-Dist: websockets>=12.0; extra == 'local-server'
Provides-Extra: test
Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
Requires-Dist: pytest-mock>=3.0.0; extra == 'test'
Requires-Dist: pytest>=7.0.0; extra == 'test'
Provides-Extra: web
Requires-Dist: opentelemetry-instrumentation-django>=0.48b0; extra == 'web'
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.45b0; extra == 'web'
Requires-Dist: opentelemetry-instrumentation-flask>=0.48b0; extra == 'web'
Description-Content-Type: text/markdown

# Lumberjack

Lumberjack is a Python library for efficient log forwarding with support for trace contexts and batched logging.

## Installation

```bash
pip install lumberjack
```

## Quick Start

```python
from lumberjack_sdk import Lumberjack, Log

# Initialize Lumberjack with your API key
Lumberjack.init(
    api_key="your-api-key",
    endpoint="https://your-logging-endpoint.com/logs"
)
# Start a trace context

try:
    # Log different severity levels with optional metadata
    Log.info("Starting image processing", image_format="PNG")

    # Some business logic here...

    Log.debug("Image validation", data={"dimensions": [1920, 1080], "color_space": "RGB"})

    # More logic...

    Log.info("Image processed successfully", output_size_kb=256)

except Exception as e:
    Log.error("Processing failed", error=str(e))


```

## Logging Levels

Lumberjack supports multiple logging levels:

```python
Log.debug("Debug information")
Log.info("General information")
Log.warning("Warning message")
Log.error("Error message")
```

## Adding Context Data

You can add metadata to your logs in two ways:

```python
)

# Using keyword arguments
Log.info("User action",
    user_id="123",
    action="login",
    ip="192.168.1.1"
)
```

## Trace Contexts

Trace contexts help you group related logs together:

```python
# Start a new trace context

# All logs within this context will include the trace ID
Log.info("Processing payment")
Log.debug("Validating card details")


```

## Configuration Options

When initializing Lumberjack, you can configure several options:

```python
Lumberjack.init(
    api_key="your-api-key",
    endpoint="https://your-logging-endpoint.com/logs",
    debug_mode=True,  # Enable debug output
    batch_size=100,   # Max logs per batch
    batch_age=5.0,    # Max seconds before sending a batch
    threading_mode="thread"  # 'thread', 'eventlet', or 'gevent'
)
```

## Thread Safety

Lumberjack is thread-safe and supports different threading modes:

- Standard Python threading (default)
- Eventlet
- Gevent

## License

MIT License - see LICENSE file for details.

## Coming soon

1. Begin tailing your production logs in your log viewer
