llama-models / app /logging_tool.py
deniskiplimo816's picture
Upload 27 files
293ab16 verified
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