Skip to main content

A flexible logging framework with JSON, file, and SMTP logging

Project description

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

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

loggerizer-1.1.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

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

loggerizer-1.1.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file loggerizer-1.1.0.tar.gz.

File metadata

  • Download URL: loggerizer-1.1.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for loggerizer-1.1.0.tar.gz
Algorithm Hash digest
SHA256 3ed0009673231cd8f697bde7887f00f917e3d89706e1e03ad746dd9d1f1889b3
MD5 0a6df48fb3d57dc381d144f50cb1da3a
BLAKE2b-256 f25c6508a77915fda1d904fdaeb9e9c0104a708ea2f407b1ee612446ef10c322

See more details on using hashes here.

Provenance

The following attestation bundles were made for loggerizer-1.1.0.tar.gz:

Publisher: publish.yml on AymanKastali/loggerizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file loggerizer-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: loggerizer-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for loggerizer-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 51e959ee2b3b1bbb15fa9b748bf8445c97c95a4afdae8c69960000f9551d09aa
MD5 22be3c9903635780636b97c30cc0e1b4
BLAKE2b-256 ac65f73d89299862395ba7988e42e51abe0c334b5251fc46f589e45e6f35b167

See more details on using hashes here.

Provenance

The following attestation bundles were made for loggerizer-1.1.0-py3-none-any.whl:

Publisher: publish.yml on AymanKastali/loggerizer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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