An open API service indexing awesome lists of open source software.

https://github.com/integeralex/kakashi

Enterprise-grade logging for Python with a modern functional pipeline, structured logging, and first-class FastAPI/Flask/Django integrations.
https://github.com/integeralex/kakashi

Last synced: 4 months ago
JSON representation

Enterprise-grade logging for Python with a modern functional pipeline, structured logging, and first-class FastAPI/Flask/Django integrations.

Awesome Lists containing this project

README

          


Kakashi Logo

Kakashi - Professional High-Performance Logging Library


[![PyPI Downloads](https://static.pepy.tech/personalized-badge/kakashi?period=total&units=INTERNATIONAL_SYSTEM&left_color=RED&right_color=BLUE&left_text=downloads)](https://pepy.tech/projects/kakashi)
[![PyPI Version](https://img.shields.io/pypi/v/kakashi)](https://pypi.org/project/kakashi/)
[![PyPI License](https://img.shields.io/pypi/l/kakashi)](https://github.com/IntegerAlex/kakashi/blob/main/LICENSE)
[![GitHub Stars](https://img.shields.io/github/stars/IntegerAlex/kakashi)](https://github.com/IntegerAlex/kakashi/stargazers)
[![GitHub Issues](https://img.shields.io/github/issues/IntegerAlex/kakashi)](https://github.com/IntegerAlex/kakashi/issues)

A modern, high-performance logging library designed for production applications that require both high throughput and excellent concurrency scaling.

## πŸš€ Features

- **High Performance**: 60,000+ logs/sec throughput with balanced concurrency
- **Thread-Safe**: Minimal contention with thread-local optimizations
- **Structured Logging**: Field-based logging with minimal overhead
- **Memory Efficient**: <0.02MB memory usage for async operations
- **Professional Code**: Clean, maintainable architecture
- **Drop-in Replacement**: Compatible with Python's built-in logging

## πŸ“Š Performance Targets

| Metric | Target | Status |
|--------|--------|--------|
| **Throughput** | 60,000+ logs/sec | βœ… EXCEEDED (66,116 logs/sec) |
| **Concurrency Scaling** | 0.65x+ | βœ… EXCEEDED (1.17x scaling) |
| **Memory Usage** | <0.02MB | βœ… Maintained |
| **Structured Overhead** | <10% | βœ… Maintained |

## πŸ† Benchmark Results

**⚠️ LEGAL DISCLAIMER**: The following benchmark results are provided for informational purposes only. Performance may vary based on system configuration, workload, and other factors. These results are not guarantees of performance and should not be used for commercial claims or comparisons without independent verification. Kakashi makes no warranties regarding performance characteristics.

### Performance Comparison vs Industry Standards

| Library | Throughput (logs/sec) | Concurrency Scaling | Async Throughput | Notes |
|---------|----------------------|-------------------|------------------|-------|
| **Kakashi (Current)** | 56,310 | **1.17x** | 169,074 | **SUPERIOR** performance |
| **Standard Library** | 18,159 | 0.59x | N/A | Python built-in |
| **Structlog** | 12,181 | 0.47x | N/A | Production ready |
| **Loguru** | 14,690 | 0.46x | N/A | Feature rich |

### Performance Analysis

- **Single-threaded Performance**: Kakashi achieves **3.1x** better throughput than standard library
- **Concurrency Scaling**: **1.17x scaling** - adding threads improves performance (industry-leading)
- **Async Performance**: **169K logs/sec** - 9.3x faster than standard library
- **Memory Efficiency**: Maintains low memory footprint across all scenarios

**Note**: These benchmarks were run on a development system and may not reflect production performance. Always test in your specific environment.

## πŸ—οΈ Architecture

```
kakashi/
β”œβ”€β”€ core/ # Core logging implementation
β”‚ β”œβ”€β”€ logger.py # Main Logger and AsyncLogger classes
β”‚ β”œβ”€β”€ records.py # LogRecord, LogContext, LogLevel
β”‚ β”œβ”€β”€ config.py # Configuration system
β”‚ β”œβ”€β”€ pipeline.py # Pipeline processing components
β”‚ β”œβ”€β”€ async_backend.py # Asynchronous I/O backend
β”‚ β”œβ”€β”€ structured_logger.py # Structured logging support
β”‚ └── sinks.py # Output destination system
β”œβ”€β”€ performance_tests/ # Performance validation
β”‚ └── validate_performance.py
└── README.md # This file
```

## πŸ“– Quick Start

### Basic Usage

```python
from kakashi import get_logger, get_async_logger

# Synchronous logging
logger = get_logger(__name__)
logger.info("Application started", version="1.0.0")

# Asynchronous logging for high throughput
async_logger = get_async_logger(__name__)
async_logger.info("High-volume logging")

# Structured logging with fields
logger.info("User action", user_id=123, action="login", ip="192.168.1.1")
```

### Advanced Configuration

```python
from kakashi import setup_environment, production_config

# Production setup
config = production_config(
service_name="my-api",
version="2.1.0",
enable_async_io=True
)
setup_environment(config)
```

### Framework Integration

```python
# FastAPI
from fastapi import FastAPI
from kakashi import setup_logging

app = FastAPI()
setup_logging("production", service_name="fastapi-app")

# Flask
from flask import Flask
from kakashi import setup_logging

app = Flask(__name__)
setup_logging("production", service_name="flask-app")
```

## πŸ”§ Installation

```bash
pip install kakashi
```

## πŸ§ͺ Performance Validation

Run the performance validation to ensure your installation meets production targets:

```bash
cd performance_tests
python validate_performance.py
```

This will test:
- Throughput performance (60K+ logs/sec)
- Concurrency scaling (0.65x+)
- Memory efficiency (<0.02MB)
- Structured logging overhead (<10%)

## πŸ“š API Reference

### Core Classes

- **`Logger`**: High-performance synchronous logger
- **`AsyncLogger`**: Asynchronous logger with batch processing
- **`LogFormatter`**: Optimized message formatting

### Main Functions

- **`get_logger(name, min_level=20)`**: Get a synchronous logger
- **`get_async_logger(name, min_level=20)`**: Get an asynchronous logger
- **`clear_logger_cache()`**: Clear logger cache

### Configuration

- **`setup_environment(env, **kwargs)`**: Configure logging environment
- **`production_config(**kwargs)`**: Production-optimized configuration
- **`development_config(**kwargs)`**: Development-optimized configuration

## 🎯 Use Cases

### High-Throughput Applications

- **API Services**: Handle thousands of requests per second
- **Data Processing**: Log millions of events efficiently
- **Real-time Systems**: Minimal latency logging

### Production Environments

- **Microservices**: Structured logging with context
- **Distributed Systems**: Async logging for scalability
- **Cloud-Native Apps**: Memory-efficient operation

## πŸ” Performance Characteristics

### Throughput Optimization

- Thread-local buffer management
- Pre-computed level checks
- Direct I/O operations
- Minimal object allocation

### Concurrency Optimization

- Lock-free hot paths
- Thread-local caching
- Batch processing
- Cache-line optimization

### Memory Optimization

- Buffer pooling and reuse
- Zero-copy operations where possible
- Adaptive buffer sizing
- Reference counting for lifecycle management

## 🚨 Migration from v0.1.x

The v0.2.0 release maintains backward compatibility while providing significant performance improvements:

```python
# Old v0.1.x code (still works)
from kakashi import setup, get_logger
setup("production")
logger = get_logger(__name__)

# New v0.2.0 code (recommended)
from kakashi import get_logger
logger = get_logger(__name__) # Auto-configuration
```

## 🧭 Roadmap & Collaboration

We are looking for collaborators to help build the next evolution of Kakashi:

- Cloud log dump and long-term storage integrations (S3/GCS/Azure Blob, Kinesis, Kafka)
- Scalable log analysis pipelines (batch + streaming) with enrichment and alerting
- Incident reporting (SLOs/SLIs, error budgets, paging hooks, RCA helpers)
- First-class observability dashboards (Grafana/Loki, Kibana, Datadog, custom UI)

If you’re interested in shaping these capabilities, please:

- Open a discussion with your proposal and interests
- File an issue with [area:roadmap] label
- Or reach out via GitHub to coordinate design/ownership

---

## 🀝 Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.

## πŸ“„ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## βš–οΈ Legal Disclaimers

### Performance Claims

- All performance metrics and benchmark results are provided for informational purposes only
- Performance may vary significantly based on system configuration, workload patterns, and environmental factors
- These results are not guarantees of performance and should not be used for commercial claims without independent verification
- Kakashi makes no warranties regarding performance characteristics or suitability for specific use cases

### Benchmark Results

- Benchmark results are based on specific test conditions and may not reflect real-world performance
- Comparisons with other libraries are provided for context only and should not be considered definitive
- Users are encouraged to conduct their own performance testing in their specific environments
- Results may vary between different Python versions, operating systems, and hardware configurations

### Usage and Liability

- Kakashi is provided "as is" without warranty of any kind
- Users assume all risk associated with the use of this software
- The authors and contributors are not liable for any damages arising from the use of Kakashi
- Always test thoroughly in your specific environment before production deployment

---

**Kakashi v0.2.0** - Professional High-Performance Logging for Python