Spaces:
Sleeping
Sleeping
File size: 1,578 Bytes
293ab16 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
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."""
@wraps(func)
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
|