Spaces:
Sleeping
Sleeping
import logging | |
from functools import wraps | |
import sys | |
# Configure logging: writes to file and optionally to console | |
def setup_logger(log_file="agent.log", console: bool = True, level=logging.INFO): | |
logger = logging.getLogger("agent_logger") | |
logger.setLevel(level) | |
# File handler | |
file_handler = logging.FileHandler(log_file) | |
file_handler.setLevel(level) | |
file_formatter = logging.Formatter("%(asctime)s | %(levelname)s | %(message)s") | |
file_handler.setFormatter(file_formatter) | |
logger.addHandler(file_handler) | |
if console: | |
# Console handler | |
console_handler = logging.StreamHandler(sys.stdout) | |
console_handler.setLevel(level) | |
console_formatter = logging.Formatter("%(asctime)s | %(levelname)s | %(message)s") | |
console_handler.setFormatter(console_formatter) | |
logger.addHandler(console_handler) | |
return logger | |
# Initialize logger (call once in your app) | |
logger = setup_logger() | |
def log_event(event: str, level: int = logging.INFO): | |
"""Log an event message at given level.""" | |
logger.log(level, event) | |
def log_function_call(func): | |
"""Decorator to log entry, exit and exceptions of a function.""" | |
def wrapper(*args, **kwargs): | |
logger.info(f"Started: {func.__name__}") | |
try: | |
result = func(*args, **kwargs) | |
logger.info(f"Finished: {func.__name__}") | |
return result | |
except Exception as e: | |
logger.error(f"Exception in {func.__name__}: {e}", exc_info=True) | |
raise | |
return wrapper | |