Loggerizer
A simple, powerful wrapper for Python's built-in logging module.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| loggerizer-1.1.0.tar.gz | 14.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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