45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
import logging
|
|
import os
|
|
from logging.handlers import RotatingFileHandler
|
|
from dotenv import load_dotenv
|
|
load_dotenv()
|
|
|
|
# Configuration values
|
|
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper()
|
|
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
LOG_DIR = os.getenv("LOG_DIR", os.path.join(os.getcwd(), "logs"))
|
|
|
|
# Ensure log directory exists
|
|
os.makedirs(LOG_DIR, exist_ok=True)
|
|
|
|
# Log file path
|
|
LOG_FILE = os.path.join(LOG_DIR, "app.log")
|
|
|
|
# Create root logger
|
|
logger = logging.getLogger("gpt-agent")
|
|
logger.setLevel(LOG_LEVEL)
|
|
|
|
# Formatter
|
|
formatter = logging.Formatter(LOG_FORMAT)
|
|
|
|
# Console handler
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(LOG_LEVEL)
|
|
console_handler.setFormatter(formatter)
|
|
logger.addHandler(console_handler)
|
|
|
|
# Rotating file handler
|
|
file_handler = RotatingFileHandler(LOG_FILE, maxBytes=5*1024*1024, backupCount=5)
|
|
file_handler.setLevel(LOG_LEVEL)
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
def get_logger(name: str | None = None) -> logging.Logger:
|
|
"""
|
|
Retrieve a configured logger instance. If name is provided,
|
|
returns a child logger of the configured root logger.
|
|
"""
|
|
if name:
|
|
return logger.getChild(name)
|
|
return logger
|