🎨 SimpleColoredLogs
Professional Terminal Logger für Python mit Farben, strukturiertem Logging und vielen Features.
📦 Installation
pip install SimpleColoredLogs
Optional mit Farb-Support:
pip install SimpleColoredLogs[color]
🚀 Schnellstart
from logger import logger, Category
# Einfache Logs
logger.info(Category.API, "Server gestartet")
logger.success(Category.SYSTEM, "Konfiguration geladen")
logger.warn(Category.SECURITY, "Ungewöhnliche Aktivität")
logger.error(Category.DATABASE, "Verbindung fehlgeschlagen")
🎯 Features
- ✅ 15+ Log-Levels (TRACE, DEBUG, INFO, SUCCESS, WARN, ERROR, CRITICAL, FATAL, etc.)
- ✅ 50+ vordefinierte Kategorien (API, DATABASE, SECURITY, PAYMENT, etc.)
- ✅ Farbige Terminal-Ausgabe
- ✅ Strukturiertes Logging (JSON, Logfmt)
- ✅ Async-Mode für High-Performance
- ✅ Performance-Metriken
- ✅ Context-Management
- ✅ Exception-Handling mit Tracebacks
- ✅ Log-Rotation & Kompression
- ✅ Remote Logging (Syslog)
- ✅ Sensitive Data Redaction
- ✅ Distributed Tracing Support
📝 Verwendung
Basis-Logging
from logger import logger, Category, LogLevel
# Logger konfigurieren
logger.initialize(
min_level=LogLevel.INFO,
console=True,
file_path="logs/app.log"
)
# Logs schreiben
logger.info(Category.API, "Request empfangen")
logger.success(Category.DATABASE, "Query erfolgreich")
logger.error(Category.SYSTEM, "Fehler aufgetreten")
Mit Shortcuts
from logger import logger, C
# Kürzer und übersichtlicher
logger.info(C.CORE.API, "API aufgerufen")
logger.error(C.SEC.FRAUD, "Betrugsversuch erkannt")
logger.success(C.BIZ.PAY, "Zahlung erfolgreich")
Mit Context
from logger import logger, Category
with logger.context("PaymentFlow"):
logger.info(Category.PAYMENT, "Zahlung gestartet")
logger.processing(Category.PAYMENT, "Verarbeite Transaktion")
logger.success(Category.PAYMENT, "Zahlung abgeschlossen")
Mit strukturierten Daten
logger.info(
Category.API,
"Request verarbeitet",
method="POST",
endpoint="/api/users",
status=201,
duration_ms=45
)
Exception Handling
try:
result = process_payment()
except Exception as e:
logger.error(
Category.PAYMENT,
"Zahlung fehlgeschlagen",
exception=e, # Automatischer Traceback
order_id=order_id
)
Performance-Messung
# Mit Context Manager
with logger.measure(Category.DATABASE, "complex_query"):
results = db.query("SELECT * FROM users")
# Als Decorator
@logger.timer(Category.API, "handle_request")
def handle_request():
# ... code ...
pass
🎨 Alle Log-Levels
logger.trace(Category.DEBUG, "Sehr detailliert")
logger.debug(Category.DEBUG, "Debug-Info")
logger.info(Category.SYSTEM, "Information")
logger.success(Category.SYSTEM, "Erfolgreich")
logger.loading(Category.SYSTEM, "Lädt...")
logger.processing(Category.SYSTEM, "Verarbeitet...")
logger.progress(Category.SYSTEM, "Fortschritt", percent=75)
logger.waiting(Category.NETWORK, "Wartet...")
logger.notice(Category.SYSTEM, "Wichtiger Hinweis")
logger.warn(Category.SECURITY, "Warnung")
logger.error(Category.API, "Fehler")
logger.critical(Category.SYSTEM, "Kritisch")
logger.fatal(Category.SYSTEM, "Fatal")
logger.security(Category.SECURITY, "Sicherheits-Event")
📁 Kategorien
Core System
API, DATABASE, SERVER, CACHE, AUTH, SYSTEM, CONFIG, RUNTIME
Network
NETWORK, HTTP, WEBSOCKET, GRPC, GRAPHQL, REST, DNS, CDN
Security
SECURITY, ENCRYPTION, FIREWALL, AUDIT, FRAUD, MFA
Business
BUSINESS, WORKFLOW, TRANSACTION, PAYMENT, ACCOUNTING, INVENTORY
Observability
METRICS, PERFORMANCE, HEALTH, MONITORING, TRACING
Alle 50+ Kategorien in der Dokumentation
🔧 Konfiguration
Via Code
from logger import logger, LogLevel
from pathlib import Path
logger.initialize(
min_level=LogLevel.DEBUG,
console=True,
console_colorized=True,
file_path=Path("logs/app.log"),
file_max_size=10 * 1024 * 1024, # 10MB
async_mode=True,
sampling_rate=1.0
)
Via Umgebungsvariablen
export LOG_LEVEL=DEBUG
export LOG_FILE=logs/app.log
export LOG_FORMAT=JSON
export LOG_COLORIZE=true
# Lädt automatisch Umgebungsvariablen
logger.initialize(apply_env_vars=True)
🔌 Handler & Filter
File Handler mit Rotation
from logger import logger, FileHandler
from pathlib import Path
handler = FileHandler(
filepath=Path("logs/app.log"),
max_size=10 * 1024 * 1024, # 10MB
backup_count=5,
compress=True
)
logger.add_handler(handler)
Remote Logging
from logger import logger, NetworkHandler
handler = NetworkHandler(
host="logs.example.com",
port=514,
protocol="udp"
)
logger.add_handler(handler)
Sensitive Data Redaction
# Automatisches Entfernen von Passwörtern, API-Keys, etc.
logger.enable_redaction()
logger.info(Category.AUTH, "Login mit password=secret123")
# Output: "Login mit password=[REDACTED]"
📊 Spezielle Logger
Audit Logger
from logger import AuditLogger
audit = AuditLogger()
audit.log_access(
user="john_doe",
resource="/api/users",
action="READ",
result="SUCCESS"
)
audit.log_security_event(
event="Failed login attempts",
severity="HIGH",
ip="192.168.1.100"
)
Performance Logger
from logger import PerformanceLogger
perf = PerformanceLogger()
perf.log_timing("api_response", 0.045) # 45ms
perf.log_throughput("requests", count=1000, duration=60.0)
Structured Logger
from logger import StructuredLogger, Category
struct = StructuredLogger()
struct.log_event(
event_type="order_placed",
category=Category.BUSINESS,
message="Bestellung aufgegeben",
user_id=123,
order_id=1001,
amount=99.99
)
📈 Metriken
# Metriken abrufen
metrics = logger.get_metrics()
print(f"Total Logs: {metrics['total_logs']}")
print(f"Errors: {metrics['error_count']}")
print(f"Avg Process Time: {metrics['avg_process_time_ms']} ms")
# Metriken zurücksetzen
logger.reset_metrics()
🌍 Distributed Tracing
# Trace-IDs für Request-Tracking
logger.set_trace_id("req-12345")
logger.set_correlation_id("corr-67890")
logger.info(Category.API, "Request verarbeitet")
# Output enthält automatisch trace_id
logger.clear_tracing()
💡 Best Practices
✅ DO
# Aussagekräftige Kategorien
logger.info(Category.API, "Request empfangen", endpoint="/users")
# Strukturierte Metadaten
logger.error(Category.DATABASE, "Query failed",
query=sql, error=str(e))
# Context für zusammenhängende Logs
with logger.context("OrderProcessing"):
logger.info(Category.BUSINESS, "Verarbeite Bestellung")
# Exception-Parameter nutzen
logger.error(Category.SYSTEM, "Fehler", exception=e)
❌ DON'T
# Zu generisch
logger.info("SYSTEM", "Irgendwas ist passiert")
# Fehlende Kontext-Infos
logger.error(Category.DATABASE, "Error")
# Exception als String (kein Traceback!)
logger.error(Category.SYSTEM, f"Error: {str(e)}")
📚 Beispiele
Siehe examples/ Verzeichnis für:
- Basic Usage
- Async Logging
- Web App Integration
- Performance Monitoring
- Audit Trails
🛠️ Requirements
- Python 3.8+
- colorama (optional, für Windows)
📄 Lizenz
MIT License - siehe LICENSE
🤝 Contributing
Contributions sind willkommen! Siehe CONTRIBUTING.md
📧 Support
- 🐛 Bug Reports: GitHub Issues
- 💡 Feature Requests: GitHub Discussions
- 📧 Email: contact@oppro.net
⭐ Support
Wenn dir SimpleColoredLogs gefällt, gib uns einen ⭐ auf GitHub!
Made with ❤️ by OPPRO.NET Network
Metadata
Release files for SimpleColoredLogs 1.16.1.2026
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| simplecoloredlogs-1.16.1.2026.tar.gz | 21.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| simplecoloredlogs-1.16.1.2026-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.7 kB
Release files / simplecoloredlogs-1.16.1.2026.tar.gz
| Download URL | simplecoloredlogs-1.16.1.2026.tar.gz |
|---|---|
| Size | 21.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b980334d8d57806d85661cf2269dfedbede963bc5aa8976a5f34222a0a6e5216
|
|
BLAKE2b-256 checksum How to use checksums |
54a2acb1d342409b358f796f895ba3befa3c004c646230816d5ff4dafa1935b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.4
|
Release files / simplecoloredlogs-1.16.1.2026-py3-none-any.whl
| Download URL | simplecoloredlogs-1.16.1.2026-py3-none-any.whl |
|---|---|
| Size | 21.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4da186d6661026cbc82f611f91af0d1354fc21142cb5cd9bcca004fcfd8c75fb
|
|
BLAKE2b-256 checksum How to use checksums |
3a8d9f08fea5070eedb777af2ab4bcedaea6e40d679e3f9f9652331fe7bd4072
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.4
|