Skip to main content

Loggerizer

A simple, powerful wrapper for Python's built-in logging module.

PyPI version Python 3.11+ License: MIT

Installation

pip install loggerizer

Quick Start

from loggerizer import LoggerFactory

logger = LoggerFactory.console()
logger.info("Hello, World!")

Logger Types

Console Logger

from loggerizer import LoggerFactory

logger = LoggerFactory.console()
logger.info("Human-readable console output")

Colored Console Logger

from loggerizer import LoggerFactory

logger = LoggerFactory.console(colorize=True)
logger.debug("Dim metadata, bold cyan level")
logger.info("Bold green level name")
logger.warning("Bold yellow level name")
logger.error("Red level + red message")
logger.critical("Bright red level + red message")

Color scheme:

  • Level name: bold + level color, padded to fixed width
  • Message: default terminal color (colored red for ERROR/CRITICAL)
  • Exceptions: colored tracebacks for ERROR/CRITICAL
  • Metadata (timestamp, logger name, etc.): dim gray
  • Separator: dim │

Colors are automatically disabled when output is piped or redirected. Works on Linux, macOS, and Windows.

Colored Console Logger (Builder)

from loggerizer import LoggerBuilder, handlers, LogLevel
from loggerizer.formatters import ColorFormatter

logger = (
    LoggerBuilder()
    .name("my_app")
    .level(LogLevel.DEBUG)
    .formatter(ColorFormatter(flat=True))
    .handler(handlers.stream())
    .build()
)

Custom Color Mapping

from loggerizer.formatters import ColorFormatter

formatter = ColorFormatter(
    flat=True,
    colors={"DEBUG": "\033[35m"},  # magenta for DEBUG
)

Console JSON Logger

from loggerizer import LoggerFactory

logger = LoggerFactory.console_json()
logger.info("Structured JSON output")

File Logger

from loggerizer import LoggerFactory

logger = LoggerFactory.file("app.log")
logger.info("Logging to file")

JSON File Logger

from loggerizer import LoggerFactory

logger = LoggerFactory.file_json("app.json")
logger.info("JSON logging to file")

Rotating Logger (by size)

from loggerizer import LoggerFactory

logger = LoggerFactory.rotating(
    "app.log",
    max_bytes=10_000_000,  # 10MB
    backup_count=5
)
logger.info("Size-based rotation")

Timed Rotating Logger

from loggerizer import LoggerFactory, RotateWhen

logger = LoggerFactory.timed_rotating(
    "app.log",
    when=RotateWhen.MIDNIGHT,
    backup_count=7
)
logger.info("Time-based rotation")

Email Logger

from loggerizer import LoggerFactory, SMTPConfig

config = SMTPConfig(
    host=("smtp.example.com", 587),
    from_address="alerts@example.com",
    to_address=["admin@example.com"],
    subject="[ALERT] Application Error",
)

logger = LoggerFactory.email(config)
logger.error("Critical error occurred!")

Null Logger

from loggerizer import LoggerFactory

logger = LoggerFactory.null()
logger.info("This message is discarded")

Custom Logger (Builder Pattern)

from loggerizer import LoggerBuilder, handlers, LogLevel, LogField, DefaultFormatter

logger = (
    LoggerBuilder()
    .name("my_app")
    .level(LogLevel.DEBUG)
    .formatter(DefaultFormatter(
        fields=[LogField.ASC_TIME, LogField.LEVEL_NAME, LogField.MESSAGE, LogField.MODULE],
        flat=True
    ))
    .handler(handlers.stream())
    .handler(handlers.file("app.log"))
    .build()
)

logger.debug("Debug message")
logger.info("Info message")
logger.error("Error message")

Adding Extra Data

from loggerizer import LoggerFactory

logger = LoggerFactory.console_json()
logger.info("User action", extra={"user_id": 123, "action": "login", "ip": "192.168.1.1"})

Custom Fields

from loggerizer import LoggerFactory, LogField

logger = LoggerFactory.console(
    fields=[
        LogField.ASC_TIME,
        LogField.LEVEL_NAME,
        LogField.MESSAGE,
        LogField.MODULE,
        LogField.FUNC_NAME,
        LogField.LINE_NO,
    ]
)
logger.info("With extra context")

Available Log Fields

Field Description
ASC_TIME Human-readable timestamp
LEVEL_NAME Log level (DEBUG, INFO, etc.)
MESSAGE Log message
NAME Logger name
MODULE Module name
FUNC_NAME Function name
LINE_NO Line number
FILE_NAME File name
PATH_NAME Full file path
PROCESS Process ID
THREAD Thread ID
EXCEPTION Exception info

Formatters

Formatter Description
DefaultFormatter Human-readable pipe-separated output
ColorFormatter ANSI-colored console output with per-segment styling
JsonFormatter Structured JSON output

Handlers

from loggerizer import handlers

handlers.stream()                    # Console output
handlers.file("app.log")             # File output
handlers.rotating("app.log")         # Size-based rotation
handlers.timed_rotating("app.log")   # Time-based rotation
handlers.smtp(config)                # Email alerts
handlers.null()                      # Discard logs

License

MIT

Metadata

Release files for loggerizer 1.1.0

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

Source distribution (sdist)

Source distribution for loggerizer 1.1.0
File Size Uploaded
loggerizer-1.1.0.tar.gz 14.0 kB Details

Built distribution (wheel)

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

Total release size: 25.2 kB

Release files / loggerizer-1.1.0.tar.gz

Download URL loggerizer-1.1.0.tar.gz
Size 14.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3ed0009673231cd8f697bde7887f00f917e3d89706e1e03ad746dd9d1f1889b3
BLAKE2b-256 checksum
How to use checksums
f25c6508a77915fda1d904fdaeb9e9c0104a708ea2f407b1ee612446ef10c322
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 18, 2026.

Transparency log

Release files / loggerizer-1.1.0-py3-none-any.whl

Download URL loggerizer-1.1.0-py3-none-any.whl
Size 11.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
51e959ee2b3b1bbb15fa9b748bf8445c97c95a4afdae8c69960000f9551d09aa
BLAKE2b-256 checksum
How to use checksums
ac65f73d89299862395ba7988e42e51abe0c334b5251fc46f589e45e6f35b167
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

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