Geezer
Old-school logging for stylish Django devs.
Use print() with ✨ taste and purpose — with color, emoji, memory, and style.
What is Geezer?
Geezer is a tiny Python logging helper that makes print-style debugging stylish, readable, and safe for dev environments.
Perfect for:
- Teaching or explaining complex code
- Debugging step-by-step logic
- Visual learners or neurodivergent-friendly workflows
- Looking good in the terminal 😎
It hides noise in production — unless you say otherwise.
🖥️ Terminal Support
Geezer looks best in terminals that support:
- UTF-8 (for emoji output)
- ANSI colors (used by
rich)
✅ Recommended:
- Windows Terminal
- macOS Terminal or iTerm2
- Any modern Linux terminal
⚠️ Note: PyCharm's terminal or legacy consoles may not render colors or emojis properly. Use an external terminal for full effect.
Install
pip install geezer
📦 PyPI: https://pypi.org/project/geezer/
Usage
✅ Basic logging
from geezer import log, warn, timer
log("Booting system", "⚙️", "startup")
✅ Custom print / log name
from geezer import log as prnt
prnt("Loading NIBBLES.BAS", "🐍", "games")
⚠️ Warnings
warn("No config file found", "config check")
🏷️ Tags & Emojis
log("Launching rockets", "🚀", "deployment")
log("Inventory loaded", "📦", "warehouse")
log("Shields down! Taking damage!", "💥", "defense")
log("Poop scooped successfully", "💩", "can-doo")
⏱️ Timed blocks
with timer("checkout flow"):
run_checkout()
🧠 Log history
from geezer import get_log_history
for entry in get_log_history():
print(entry["timestamp"], entry["message"])
🤖 Auto-tagging
import geezer.log
geezer.log.auto_tagging = True
log("Checkout complete") # gets auto-tagged ✅
log("Payment gateway choked") # auto-tagged 🤮
More fun examples
log("Connecting to mothership", "🛸", "api")
log("New customer signed up", "🧍", "user event")
log("Refresh token expired", "⏳", "auth")
log("Cache hit for homepage", "🧠", "performance")
log("Dark mode enabled", "🌚", "settings")
log("New dog uploaded to gallery", "🐶", "media")
log("Geezer initialized and logging like a pro", "🧓", "geezer-core")
log("New deal created", "🛒", "deal")
Output Example
[🛒 checkout] Starting checkout for user 42
[✅ card validation] Card info validated
[🔌 payment gateway] Calling Fortis API...
[💰 payment] Transaction approved for $49.99
[➡️ redirect] Redirecting to receipt page
Styled with rich under the hood.
✨ Features
🟡 warn()
warn("User has no saved card", "user check")
⏱️ timer()
with timer("checkout process"):
run_checkout()
🧠 Log history
from geezer import get_log_history
logs = get_log_history()
for entry in logs:
print(entry["timestamp"], entry["message"])
🤖 Auto-emoji
Enable auto-tagging:
import geezer.log
geezer.log.auto_tagging = True
Now this:
log("API call failed due to timeout")
Becomes:
[❌ error] API call failed due to timeout
Config
By default, geezer only prints in dev:
DJANGO_DEBUG=True
Or override manually with "ok" as the last argument.
Why “Geezer”?
Because sometimes the old ways are the best.
Geezer gives you raw, readable feedback — with zero setup, and max personality.
Roadmap
- Console styling with
rich - Utility functions (
warn,timer) - Emoji + label tagging
- In-memory log history
- Auto emoji detection
- File logging
- Timestamp prefix toggle
- Custom output backends (file, webhook, etc)
-
geeze()alias just for fun
Pull up a chair.
Throw in a prnt() or log().
Talk to yourself a little.
You earned it, geezer.
Metadata
Release files for geezer 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| geezer-0.1.3.tar.gz | 6.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| geezer-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.3 kB
Release files / geezer-0.1.3.tar.gz
| Download URL | geezer-0.1.3.tar.gz |
|---|---|
| Size | 6.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9841d6c954a2732fbb6532a272200731ed8aba7fc9a5d34b9f30e45b12b369eb
|
|
BLAKE2b-256 checksum How to use checksums |
92192157653f6bfdf50abf4e6d9d013096057a155322a5465b4f011aec763ca1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.4
|
Release files / geezer-0.1.3-py3-none-any.whl
| Download URL | geezer-0.1.3-py3-none-any.whl |
|---|---|
| Size | 6.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d82a0c7ef55c0a427af83d36d00fae0d2dda636e47c6a4d510df4dc1ad562de
|
|
BLAKE2b-256 checksum How to use checksums |
38e47d17ce38428bdbbd7d8844d4a1b9361bbf99b7c670e794aa4f54b4bcb8b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.4
|