Old-school debug logging for stylish devs
Project description
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.
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
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 geezer-0.1.3.tar.gz.
File metadata
- Download URL: geezer-0.1.3.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9841d6c954a2732fbb6532a272200731ed8aba7fc9a5d34b9f30e45b12b369eb
|
|
| MD5 |
15a84124c769345ac38b523c6a37ddfd
|
|
| BLAKE2b-256 |
92192157653f6bfdf50abf4e6d9d013096057a155322a5465b4f011aec763ca1
|
File details
Details for the file geezer-0.1.3-py3-none-any.whl.
File metadata
- Download URL: geezer-0.1.3-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d82a0c7ef55c0a427af83d36d00fae0d2dda636e47c6a4d510df4dc1ad562de
|
|
| MD5 |
e2b87bade04b2a9c1d6d498405082e7e
|
|
| BLAKE2b-256 |
38e47d17ce38428bdbbd7d8844d4a1b9361bbf99b7c670e794aa4f54b4bcb8b1
|