Skip to main content

Ezplog

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

Ezplog Logo

ezplog is a modern Python logging framework combining Rich console rendering and loguru file logging with an explicit app/lib compatibility model.

📦 Installation

# With uv (recommended)
uv add ezplog

# With pip
pip install ezplog

Or from source:

git clone https://github.com/neuraaak/ezplog.git
cd ezplog

uv pip install -e .   # uv
pip install -e .      # pip

🚀 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
Concepts 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.trace(), printer.exception()
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()
logger.trace(), logger.exception()

# 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"])

💻 CLI Usage

The ezpl command provides tools for log inspection and configuration management.

# View recent log entries
ezpl logs view --lines 50

# Search for errors across log files
ezpl logs search --pattern "error|exception" --level ERROR

# Export logs to JSON
ezpl logs export --format json --output logs.json

# Read or update configuration
ezpl config get --show-env
ezpl config set log-level DEBUG

# Open the documentation site
ezpl docs

See the CLI Reference for the full command and option listing.

🛡️ 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.


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

Metadata

Release files for ezplog 2.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ezplog 2.3.1
File Size Uploaded
ezplog-2.3.1.tar.gz 159.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ezplog 2.3.1
File Interpreter ABI Platform
ezplog-2.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 245.4 kB

Release files / ezplog-2.3.1.tar.gz

Download URL ezplog-2.3.1.tar.gz
Size 159.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ccff09ed95d29cba69401abfad5ca2fb966cc4f697be0f9fb6886ecee2fabb44
BLAKE2b-256 checksum
How to use checksums
f1c30a260b8eb4f5e354f5c3e34a24612c0783ef5a1c40c3767a9c9f29f5aa9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Release files / ezplog-2.3.1-py3-none-any.whl

Download URL ezplog-2.3.1-py3-none-any.whl
Size 86.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
adf020e8e51e53b4acbe0a8de7b9414c240bf9588856f04c18fa42328e9b8a22
BLAKE2b-256 checksum
How to use checksums
17cbf1014625fca3177b8505da35245e06b39949d11e6f364bec9171af9c7b65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Release history Release notifications | RSS feed

2.3.3

2 release files

2.3.2

2 release files

This release

2.3.1 This release

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.8

2 release files

2.1.7

2 release files

2.1.6

2 release files

2.1.5

2 release files

2.1.4

2 release files

2.1.3

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page