Pyvider Telemetry: An opinionated, developer-friendly telemetry wrapper for Python.
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
๐๐ก pyvider.telemetry
Beautiful, performant, structured logging for Python.
Modern structured logging built on structlog with emoji-enhanced visual parsing and semantic Domain-Action-Status patterns.
Make your logs beautiful and meaningful! pyvider.telemetry transforms your application logging with visual emoji prefixes, semantic Domain-Action-Status patterns, and high-performance structured output. Perfect for development debugging, production monitoring, and everything in between.
๐ค Why pyvider.telemetry?
- ๐จ Visual Log Parsing: Emoji prefixes based on logger names and semantic context make logs instantly scannable
- ๐ Semantic Structure: Domain-Action-Status (DAS) pattern brings meaning to your log events
- โก High Performance: Benchmarked >14,000 msg/sec (see details below)
- ๐ง Zero Configuration: Works beautifully out of the box, configurable via environment variables or code
- ๐ฏ Developer Experience: Thread-safe, async-ready, with comprehensive type hints for Python 3.13+
โจ Features
-
๐จ Emoji-Enhanced Logging:
- Logger Name Prefixes:
๐ User authentication successful(auth module) - Domain-Action-Status:
[๐][โก๏ธ][โ ] Login completed(auth-login-success) - Custom TRACE Level: Ultra-verbose debugging with
๐ฃvisual markers
- Logger Name Prefixes:
-
๐ Production Ready:
- High Performance: >14,000 messages/second throughput (average ~40,000 msg/sec)
- Thread Safe: Concurrent logging from multiple threads
- Async Support: Native async/await compatibility
- Memory Efficient: Optimized emoji caching and processor chains
-
โ๏ธ Flexible Configuration:
- Multiple Formats: JSON for production, key-value for development
- Module-Level Filtering: Different log levels per component
- Environment Variables: Zero-code configuration options
- Service Identification: Automatic service name injection
-
๐๏ธ Modern Python:
- Python 3.13+ Exclusive: Latest language features and typing
- Built with
attrs: Immutable, validated configuration objects - Structlog Foundation: Industry-standard structured logging
๐ Installation
Requires Python 3.13 or later.
pip install pyvider-telemetry
๐ก Quick Start
Basic Usage
from pyvider.telemetry import setup_telemetry, logger
# Initialize with sensible defaults
setup_telemetry()
# Start logging immediately
logger.info("Application started", version="1.0.0")
logger.debug("Debug information", component="auth")
logger.error("Something went wrong", error_code="E123")
# Create component-specific loggers
auth_logger = logger.get_logger("auth.service")
auth_logger.info("User login attempt", user_id=12345)
# Output: ๐ User login attempt user_id=12345
Semantic Domain-Action-Status Logging
# Use domain, action, status for semantic meaning
logger.info("User authentication",
domain="auth", action="login", status="success",
user_id=12345, ip="192.168.1.100")
# Output: [๐][โก๏ธ][โ
] User authentication user_id=12345 ip=192.168.1.100
logger.error("Database connection failed",
domain="database", action="connect", status="error",
host="db.example.com", timeout_ms=5000)
# Output: [๐๏ธ][๐][๐ฅ] Database connection failed host=db.example.com timeout_ms=5000
Custom Configuration
from pyvider.telemetry import setup_telemetry, TelemetryConfig, LoggingConfig
config = TelemetryConfig(
service_name="my-microservice",
logging=LoggingConfig(
default_level="INFO",
console_formatter="json", # JSON for production
module_levels={
"auth": "DEBUG", # Verbose auth logging
"database": "ERROR", # Only DB errors
"external.api": "WARNING", # Minimal third-party noise
}
)
)
setup_telemetry(config)
Environment Variable Configuration
export PYVIDER_SERVICE_NAME="my-service"
export PYVIDER_LOG_LEVEL="INFO"
export PYVIDER_LOG_CONSOLE_FORMATTER="json"
export PYVIDER_LOG_MODULE_LEVELS="auth:DEBUG,db:ERROR"
from pyvider.telemetry import setup_telemetry, TelemetryConfig
# Automatically loads from environment
setup_telemetry(TelemetryConfig.from_env())
Exception Logging
try:
risky_operation()
except Exception:
logger.exception("Operation failed",
operation="user_registration",
user_id=123)
# Automatically includes full traceback
Ultra-Verbose TRACE Logging
from pyvider.telemetry import setup_telemetry, logger, TelemetryConfig, LoggingConfig
# Enable TRACE level for deep debugging
config = TelemetryConfig(
logging=LoggingConfig(default_level="TRACE")
)
setup_telemetry(config)
logger.trace("Entering function", function="authenticate_user")
logger.trace("Token validation details",
token_type="bearer", expires_in=3600)
๐ Performance
pyvider.telemetry is designed for high-throughput production environments:
| Scenario | Performance | Notes |
|---|---|---|
| Basic Logging | ~40,000 msg/sec | Key-value format with emojis |
| JSON Output | ~38,900 msg/sec | Structured production format |
| Multithreaded | ~39,800 msg/sec | Concurrent logging |
| Level Filtering | ~68,100 msg/sec | Efficiently filters by level |
| Large Payloads | ~14,200 msg/sec | Logging with larger event data |
| Async Logging | ~43,400 msg/sec | Logging from async code |
Overall Average Throughput: ~40,800 msg/sec Peak Throughput: ~68,100 msg/sec
Run benchmarks yourself:
python scripts/benchmark_performance.py
python scripts/extreme_performance.py
๐จ Emoji Reference
Domain Emojis (Primary)
๐auth,๐๏ธdatabase,๐network,โ๏ธsystem๐๏ธserver,๐client,๐security,๐file
Action Emojis (Secondary)
โก๏ธlogin,๐connect,๐คsend,๐ฅreceive๐query,๐write,๐๏ธdelete,โ๏ธprocess
Status Emojis (Tertiary)
โsuccess,โfailure,๐ฅerror,โ ๏ธwarningโณattempt,๐retry,๐complete,โฑ๏ธtimeout
See full matrix: PYVIDER_SHOW_EMOJI_MATRIX=true python -c "from pyvider.telemetry.logger.emoji_matrix import show_emoji_matrix; show_emoji_matrix()"
๐ง Advanced Usage
Async Applications
import asyncio
from pyvider.telemetry import setup_telemetry, logger, shutdown_pyvider_telemetry
async def main():
setup_telemetry()
# Your async application code
logger.info("Async app started")
# Graceful shutdown
await shutdown_pyvider_telemetry()
asyncio.run(main())
Production Configuration
production_config = TelemetryConfig(
service_name="production-service",
logging=LoggingConfig(
default_level="INFO", # Don't spam with DEBUG
console_formatter="json", # Machine-readable
module_levels={
"security": "DEBUG", # Always verbose for security
"performance": "WARNING", # Only perf issues
"third_party": "ERROR", # Minimal external noise
}
)
)
๐ Documentation
For comprehensive API documentation, configuration options, and advanced usage patterns, see:
๐ License
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.
๐ Acknowledgements
pyvider.telemetry builds upon these excellent open-source libraries:
structlog- The foundation for structured loggingattrs- Powerful data classes and configuration management
๐ค Development Transparency
AI-Assisted Development Notice: This project was developed with significant AI assistance for code generation and implementation. While AI tools performed much of the heavy lifting for writing code, documentation, and tests, all architectural decisions, design patterns, functionality requirements, and final verification were made by human developers.
Human Oversight Includes:
- Architectural design and module structure decisions
- API design and interface specifications
- Feature requirements and acceptance criteria
- Code review and functionality verification
- Performance requirements and benchmarking validation
- Testing strategy and coverage requirements
- Release readiness assessment
AI Assistance Includes:
- Code implementation based on human specifications
- Documentation generation and formatting
- Test case generation and implementation
- Example script creation
- Boilerplate and repetitive code generation
This approach allows us to leverage AI capabilities for productivity while maintaining human control over critical technical decisions and quality assurance.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyvider_telemetry-0.0.15.tar.gz.
File metadata
- Download URL: pyvider_telemetry-0.0.15.tar.gz
- Upload date:
- Size: 96.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4e461636f6db70aadad8503b47a48e6d23ab083075342e9400107c4c69e2bd3
|
|
| MD5 |
7bd81de4cecddf7947be81e16906eb31
|
|
| BLAKE2b-256 |
b20261a14e18b63ef0f1aa5504d26f9f1dcafda900f6a471041d47e58497853a
|
File details
Details for the file pyvider_telemetry-0.0.15-py3-none-any.whl.
File metadata
- Download URL: pyvider_telemetry-0.0.15-py3-none-any.whl
- Upload date:
- Size: 42.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12ac9fee8da9dbb8965908e88f22128fa1802ec1af73ce6eb58042cb0ac3bdc5
|
|
| MD5 |
c1a699ef8be00f5c1088acedbdfb93bb
|
|
| BLAKE2b-256 |
67d55b7df09f0b998684e70b829ddca32e3769db072a5e7286395a676662dbf4
|