Modern Python logging framework with Rich console output and loguru file logging, featuring advanced display capabilities, configuration management, and a simple typed API.
Project description
Ezplog
ezplog is a modern Python logging framework combining Rich console rendering and loguru file logging with an explicit app/lib compatibility model.
📦 Installation
pip install ezplog
Or from source:
git clone https://github.com/neuraaak/ezplog.git
cd ezplog && pip install .
🚀 Quick Start
from ezplog import Ezpl
# Initialize once in the application entrypoint
ezpl = Ezpl(log_file="app.log", hook_logger=True, hook_printer=True)
printer = ezpl.get_printer()
logger = ezpl.get_logger()
# Console output (Rich formatting)
printer.info("Information message")
printer.success("Operation completed!")
printer.warning("Warning message")
# File logging (loguru)
logger.info("Logged to file")
# Advanced features
printer.wizard.success_panel("Success", "Operation completed")
printer.wizard.table([{"Name": "Alice", "Age": 30}], title="Users")
🎯 Key Features
- ✅ Singleton Pattern: One global instance for the whole application
- ✅ Rich Console Output: Colors, panels, tables, JSON, and progress bars
- ✅ File Logging: Rotation, retention, and compression via loguru
- ✅ Explicit Compatibility Hooks: Fine control between app mode and lib mode
- ✅ Configuration Management: Arguments, environment variables, file, and runtime updates
- ✅ CLI Tools: Commands for logs and configuration
- ✅ Full Type Hints: Complete typing support for IDEs and linters
- ✅ Robust Fallbacks: Safe behavior even with problematic message objects
📚 Documentation
Complete documentation is available at neuraaak.github.io/ezplog
| Section | Description |
|---|---|
| Getting Started | Installation, basic usage, and first steps |
| Explanations | Design rationale, trade-offs, and architecture |
| API Reference | Complete API documentation with examples |
| CLI Reference | Command-line interface guide |
| User Guides | Configuration, development, and testing guides |
| Examples | Practical examples and demonstrations |
🧪 Testing
Comprehensive test suite covering unit, integration, and robustness scenarios. Coverage is generated automatically in documentation workflows.
# Install dev dependencies
uv sync --extra dev
# Run all tests
uv run pytest tests/
# Run specific test types
uv run pytest tests/unit/
uv run pytest tests/integration/
uv run pytest tests/robustness/
# With coverage
uv run pytest --cov=src/ezplog --cov-report=term --cov-report=html
See Testing Guide for complete details.
🛠️ Development Setup
For contributors and developers:
# Install in development mode with all dependencies
uv sync --extra dev --extra docs --extra test
# Install pre-commit hooks (code formatting, linting)
uv run pre-commit install
# Run quality checks
uv run ruff check src tests
uv run ty check
Source code uses a src/ layout (src/ezplog).
Git Hooks:
- pre-commit: Automatically formats and lints code before commit
See Development Guide for full details.
🎨 Main Components
Ezpl: Singleton main class for centralized logging managementEzPrinter(alias:Printer): Rich-based console output with pattern formatEzLogger(alias:Logger): loguru-based file logging with rotation supportRichWizard: Advanced Rich display (panels, tables, JSON, progress bars)ConfigurationManager: Centralized configuration management
📦 Dependencies
- rich>=13.0.0 – Beautiful console output and formatting
- loguru>=0.7.2 – Modern and powerful file logging
- click>=8.0.0 – CLI framework
🔧 Quick API Reference
from ezplog import Ezpl, Printer, Logger
ezpl = Ezpl(hook_logger=True, hook_printer=True)
printer: Printer = ezpl.get_printer()
logger: Logger = ezpl.get_logger()
# Console methods
printer.info(), printer.success(), printer.warning(), printer.error()
printer.tip(), printer.system(), printer.install() # Pattern methods
printer.wizard.panel(), printer.wizard.table(), printer.wizard.json()
# File logging
logger.info(), logger.debug(), logger.warning(), logger.error()
# Configuration
ezpl.set_level("DEBUG")
ezpl.configure(log_rotation="10 MB", log_retention="7 days")
ezpl.set_compatibility_hooks(hook_logger=True, logger_names=["vendor.payment"])
🛡️ Robustness
Ezpl is designed to never crash, even with problematic input:
- Automatic string conversion for non-string messages
- Robust error handling in formatters
- Safe handling of special characters and Unicode
- Graceful fallbacks for all error cases
📝 License
MIT License – See LICENSE file for details.
🔗 Links
- Documentation: https://neuraaak.github.io/ezplog/
- Repository: https://github.com/neuraaak/ezplog
- PyPI: https://pypi.org/project/ezplog/
- Issues: GitHub Issues
ezplog - Modern, typed, robust and beautiful logging for Python.
Project details
Release history Release notifications | RSS feed
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 ezplog-2.1.4.tar.gz.
File metadata
- Download URL: ezplog-2.1.4.tar.gz
- Upload date:
- Size: 193.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6510ce769ec74d8edeb571c54bbf12951cfbba9a1803edc4c8ccb66bfb53fab
|
|
| MD5 |
314c69f71ac4aa2e2352a91518568f9c
|
|
| BLAKE2b-256 |
59f7222d3bea177bc7261c1d0b1424576db4b6a61b88085f56b032c746ea3b3a
|
File details
Details for the file ezplog-2.1.4-py3-none-any.whl.
File metadata
- Download URL: ezplog-2.1.4-py3-none-any.whl
- Upload date:
- Size: 82.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77766e692489dda3535077b01a37fbdf906bbd90ec7350dfd8dc20ead09eb004
|
|
| MD5 |
d6d2b3b7b25b0fd4c525d57a2a886cca
|
|
| BLAKE2b-256 |
808a1b61bf0aeab6f9de9633f6b42bcd7caa1f73bb2071590b17ba35899847f8
|