Skip to main content

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

PyPI version Python versions PyPI status License CI Docs uv linter type checker

Logo

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 management
  • EzPrinter (alias: Printer): Rich-based console output with pattern format
  • EzLogger (alias: Logger): loguru-based file logging with rotation support
  • RichWizard: 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


ezplog - Modern, typed, robust and beautiful logging for Python.

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

ezplog-2.1.5.tar.gz (193.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ezplog-2.1.5-py3-none-any.whl (82.3 kB view details)

Uploaded Python 3

File details

Details for the file ezplog-2.1.5.tar.gz.

File metadata

  • Download URL: ezplog-2.1.5.tar.gz
  • Upload date:
  • Size: 193.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ezplog-2.1.5.tar.gz
Algorithm Hash digest
SHA256 347dabfeeba5f8f4c39d67dc4c03d034b8c661959212b9233dcfede923a88152
MD5 b9fc9e082dcb7460bfa7cf8b976a425a
BLAKE2b-256 f36d62ab8971624eb0e3f715db342e11cb7fc03bcafbe92921a067a38098b050

See more details on using hashes here.

File details

Details for the file ezplog-2.1.5-py3-none-any.whl.

File metadata

  • Download URL: ezplog-2.1.5-py3-none-any.whl
  • Upload date:
  • Size: 82.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ezplog-2.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 2c4049ec21ec277ebdf7b1f79fd93cb7066f708e5a4f11c79e7138646cb34a3e
MD5 6feccbe887882b8b0b34f041557ff805
BLAKE2b-256 4c42697b628b917b7061208cabc41e76ea0fca1400675a8bba1c1d53235f5c5b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page