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")
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 |
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.0.0.tar.gz.
File metadata
- Download URL: loggerizer-1.0.0.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3d46ed828c9020bf1221aab62a16c63c822022780e84f09c4f88282c61a8da6
|
|
| MD5 |
7671628fcf61da4a91fa44cb58e157ee
|
|
| BLAKE2b-256 |
7f533d7731f93ac815d0f785223f8a13593395f81c4704b6ea17f1ac4d25aab7
|
Provenance
The following attestation bundles were made for loggerizer-1.0.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.0.0.tar.gz -
Subject digest:
d3d46ed828c9020bf1221aab62a16c63c822022780e84f09c4f88282c61a8da6 - Sigstore transparency entry: 923411405
- Sigstore integration time:
-
Permalink:
AymanKastali/loggerizer@5f7d0951db171111e62f16062de0ef5580f60d46 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/AymanKastali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5f7d0951db171111e62f16062de0ef5580f60d46 -
Trigger Event:
release
-
Statement type:
File details
Details for the file loggerizer-1.0.0-py3-none-any.whl.
File metadata
- Download URL: loggerizer-1.0.0-py3-none-any.whl
- Upload date:
- Size: 9.4 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 |
4d812d696856807f40364ab1ca9473766a51cda03045e643d2d6f69007249adc
|
|
| MD5 |
52b4287d2332867fb872b16b127cf6e3
|
|
| BLAKE2b-256 |
46b078b98b40bf43f5131a41e4dfbcf042b4f2b87a0bab2c115b73fdc4601f23
|
Provenance
The following attestation bundles were made for loggerizer-1.0.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.0.0-py3-none-any.whl -
Subject digest:
4d812d696856807f40364ab1ca9473766a51cda03045e643d2d6f69007249adc - Sigstore transparency entry: 923411408
- Sigstore integration time:
-
Permalink:
AymanKastali/loggerizer@5f7d0951db171111e62f16062de0ef5580f60d46 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/AymanKastali
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5f7d0951db171111e62f16062de0ef5580f60d46 -
Trigger Event:
release
-
Statement type: