A high-performance, structured logging system for Python applications.
Supports async logging, Elastic Stack integration, structured JSON logs, and colorized console output.
- Structured JSON & Human-Readable Logs (Optimized for Elastic Stack)
- Dynamic Metadata Support (
user_id
,request_id
, etc.) - Application-Aware Logging (
get_logger("my_app")
) - Multi-Thread & Multi-Process Friendly (
thread_id
,process_id
) - Colored Console Output (
INFO
in green,ERROR
in red, etc.) - Internal Logger for Debugging the Logging System
- Supports File Rotation & Future Cloud Integration
The full documentation is available on GitHub Pages.
pip install hestia-logger
1. Basic Setup
from hestia_logger import get_logger
# Get a logger instance
logger = get_logger("development")
# Log messages with different levels
logger.debug("This is a DEBUG log")
logger.info("Application started successfully")
logger.warning("Low disk space warning")
logger.error("Failed to connect to database")
logger.critical("System is down!")
2. Decorator Example
from hestia_logger import get_logger
from hestia_logger.decorators import log_execution
# Initialize the logger
logger = get_logger("decorator")
@log_execution
def add_numbers(a, b):
"""Adds two numbers and returns the result."""
return a + b
@log_execution
def simulate_task():
"""Simulates a task that takes time."""
import time
time.sleep(2)
return "Task completed!"
# Call the functions
if __name__ == "__main__":
result = add_numbers(5, 10)
logger.info(f"Result: {result}")
task_status = simulate_task()
logger.info(f"Task Status: {task_status}")
3. Adding Custom Metadata
from hestia_logger import get_logger
logger = get_logger("my_application", metadata={"user_id": "12345",
"request_id": "abcd-xyz"})
logger.info("User login successful")
HESTIA Logger creates two main log files:
File | Format | Purpose |
---|---|---|
app.log | JSON | Machine-readable (Elastic Stack) |
all.log | Text | Human-readable debug logs |
Log Level | Color |
---|---|
DEBUG | 🔵 Blue |
INFO | ⚫ Black |
WARNING | 🟡 Yellow |
ERROR | 🔴 Red |
CRITICAL | 🔥 Bold Red |
HESTIA Logger supports environment-based configuration via .env or export:
# Environment Variables
ENVIRONMENT=local
LOG_LEVEL=INFO
2025-03-06 20:40:23 - my_application - INFO - Application started!
{
"timestamp": "2025-03-06T20:40:23.286Z",
"level": "INFO",
"hostname": "server-1",
"container_id": "N/A",
"application": "my_application",
"event": "Application started successfully!",
"thread": 12345,
"process": 56789,
"uuid": "d3f5b2c1-4f27-46a8-b3d2-f4a7a5c3ef29",
"metadata": {
"user_id": "12345",
"request_id": "abcd-xyz"
}
}
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.