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.6.tar.gz (194.0 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.6-py3-none-any.whl (83.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ezplog-2.1.6.tar.gz
  • Upload date:
  • Size: 194.0 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.6.tar.gz
Algorithm Hash digest
SHA256 47fa05b7bf97ce3c4ca138a161112d95b3846c2801b804779ac13a1f10eb9b61
MD5 07d31c86b6a2b9c54a95199abfcbd7ed
BLAKE2b-256 a7405f8429616d4ee2f00f0de1fd4d3123f8aa91a4fa5fa520fb95de3e303bf6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ezplog-2.1.6-py3-none-any.whl
  • Upload date:
  • Size: 83.0 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 51088bd90c7634c49830d3eab36475ad3d1fc7175d3ecdc6196197dad4537aef
MD5 69dcbd6e9ede2bbf3aad2daacc63e599
BLAKE2b-256 35e48d8ac2aff6b1b3e928848bf16f82896873f4f8852ed0c47e789512c646f0

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