A flexible logging framework with JSON, file, and SMTP logging
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ed0009673231cd8f697bde7887f00f917e3d89706e1e03ad746dd9d1f1889b3
|
|
| MD5 |
0a6df48fb3d57dc381d144f50cb1da3a
|
|
| BLAKE2b-256 |
f25c6508a77915fda1d904fdaeb9e9c0104a708ea2f407b1ee612446ef10c322
|
Provenance
The following attestation bundles were made for loggerizer-1.1.0.tar.gz:
Publisher:
publish.yml on AymanKastali/loggerizer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
loggerizer-1.1.0.tar.gz -
Subject digest:
3ed0009673231cd8f697bde7887f00f917e3d89706e1e03ad746dd9d1f1889b3 - Sigstore transparency entry: 962472990
- Sigstore integration time:
-
Permalink:
AymanKastali/loggerizer@a453b3cc274542fc824859102a3916e41b0422d9 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/AymanKastali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a453b3cc274542fc824859102a3916e41b0422d9 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51e959ee2b3b1bbb15fa9b748bf8445c97c95a4afdae8c69960000f9551d09aa
|
|
| MD5 |
22be3c9903635780636b97c30cc0e1b4
|
|
| BLAKE2b-256 |
ac65f73d89299862395ba7988e42e51abe0c334b5251fc46f589e45e6f35b167
|
Provenance
The following attestation bundles were made for loggerizer-1.1.0-py3-none-any.whl:
Publisher:
publish.yml on AymanKastali/loggerizer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
loggerizer-1.1.0-py3-none-any.whl -
Subject digest:
51e959ee2b3b1bbb15fa9b748bf8445c97c95a4afdae8c69960000f9551d09aa - Sigstore transparency entry: 962472993
- Sigstore integration time:
-
Permalink:
AymanKastali/loggerizer@a453b3cc274542fc824859102a3916e41b0422d9 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/AymanKastali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a453b3cc274542fc824859102a3916e41b0422d9 -
Trigger Event:
release
-
Statement type: