# Jazzmine Logging

A flexible, production-ready logging library for Python with support for multiple sinks and async operations.

## Features

- **Multiple Sinks**: Support for 15+ logging destinations
- **Async Support**: Async logging with `aiohttp` and async sink implementations
- **Flexible Configuration**: YAML/JSON-based configuration or just pass in a string
- **Context Management**: Request context tracking
- **Optional Dependencies**: Install only what you need

## Installation

### Basic Installation
```bash
pip install jazzmine-logging
```

### With Optional Sinks
```bash
# Individual sinks
pip install jazzmine-logging[sentry]
pip install jazzmine-logging[kafka]
pip install jazzmine-logging[redis]
pip install jazzmine-logging[honeycomb]
pip install jazzmine-logging[aws]
pip install jazzmine-logging[gcp]

# All sinks
pip install jazzmine-logging[all]
```

## Supported Sinks

### HTTP-Based Sinks
- **Datadog** - Datadog HTTP API
- **Loki** - Grafana Loki
- **New Relic** - New Relic Logs API
- **Logstash** - Elastic Logstash HTTP input

### Cloud Provider Sinks
- **CloudWatch** - AWS CloudWatch Logs (requires `aws` extra)
- **Pub/Sub** - Google Cloud Pub/Sub (requires `gcp` extra)

### Message Queue Sinks
- **Kafka** - Apache Kafka (requires `kafka` extra)
- **Redis** - Redis Streams (requires `redis` extra)

### Observability Platforms
- **Sentry** - Error tracking (requires `sentry` extra)
- **Honeycomb** - Observability platform (requires `honeycomb` extra)

### Agent-Based Sinks
- **Vector** - Vector HTTP sink
- **Fluent Bit** - Fluent Bit HTTP input
- **Promtail** - Grafana Promtail
- **Graylog** - GELF format (HTTP/UDP/TCP)

## Quick Start

```python
from jazzmine.logging import BaseLogger

# Initialize logger
logger = BaseLogger.from_config('logging_config.yaml')

# Log messages
logger.info('Application started')
logger.error('Something went wrong', extra={'user_id': 123})

# Async logging
await logger.alog('info', 'Async log message')
```

## Configuration Example

```yaml
logger_name: my_app
level: INFO

sinks:
  - type: datadog
    api_key: your_api_key
    site: datadoghq.com
    
  - type: sentry
    dsn: your_sentry_dsn
    environment: production
```

## License

MIT License - see [LICENSE](LICENSE) file for details.

## Part of the Jazzmine Ecosystem

This package is part of the Jazzmine framework. Check out other packages:
- `jazzmine-security` - Security utilities
- `jazzmine-monitoring` - Monitoring and metrics
