Refactor logger setup to conditionally enable file logging.
Added error handling for file creation issues.
This commit is contained in:
@@ -109,15 +109,17 @@ def setup_logger(
|
|||||||
logger_name: str,
|
logger_name: str,
|
||||||
level: str = "INFO",
|
level: str = "INFO",
|
||||||
add_filter: bool = False,
|
add_filter: bool = False,
|
||||||
log_file_path: str = None,
|
log_file_path: str | None = None,
|
||||||
|
enable_file_logging: bool = True,
|
||||||
):
|
):
|
||||||
"""Set up a logger with console and file handlers
|
"""Set up a logger with console and optionally file handlers
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
logger_name: Name of the logger to set up
|
logger_name: Name of the logger to set up
|
||||||
level: Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
level: Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
||||||
add_filter: Whether to add LightragPathFilter to the logger
|
add_filter: Whether to add LightragPathFilter to the logger
|
||||||
log_file_path: Path to the log file. If None, will use current directory/lightrag.log
|
log_file_path: Path to the log file. If None and file logging is enabled, defaults to lightrag.log in LOG_DIR or cwd
|
||||||
|
enable_file_logging: Whether to enable logging to a file (defaults to True)
|
||||||
"""
|
"""
|
||||||
# Configure formatters
|
# Configure formatters
|
||||||
detailed_formatter = logging.Formatter(
|
detailed_formatter = logging.Formatter(
|
||||||
@@ -125,18 +127,6 @@ def setup_logger(
|
|||||||
)
|
)
|
||||||
simple_formatter = logging.Formatter("%(levelname)s: %(message)s")
|
simple_formatter = logging.Formatter("%(levelname)s: %(message)s")
|
||||||
|
|
||||||
# Get log file path
|
|
||||||
if log_file_path is None:
|
|
||||||
log_dir = os.getenv("LOG_DIR", os.getcwd())
|
|
||||||
log_file_path = os.path.abspath(os.path.join(log_dir, "lightrag.log"))
|
|
||||||
|
|
||||||
# Ensure log directory exists
|
|
||||||
os.makedirs(os.path.dirname(log_file_path), exist_ok=True)
|
|
||||||
|
|
||||||
# Get log file max size and backup count from environment variables
|
|
||||||
log_max_bytes = int(os.getenv("LOG_MAX_BYTES", 10485760)) # Default 10MB
|
|
||||||
log_backup_count = int(os.getenv("LOG_BACKUP_COUNT", 5)) # Default 5 backups
|
|
||||||
|
|
||||||
logger_instance = logging.getLogger(logger_name)
|
logger_instance = logging.getLogger(logger_name)
|
||||||
logger_instance.setLevel(level)
|
logger_instance.setLevel(level)
|
||||||
logger_instance.handlers = [] # Clear existing handlers
|
logger_instance.handlers = [] # Clear existing handlers
|
||||||
@@ -148,16 +138,34 @@ def setup_logger(
|
|||||||
console_handler.setLevel(level)
|
console_handler.setLevel(level)
|
||||||
logger_instance.addHandler(console_handler)
|
logger_instance.addHandler(console_handler)
|
||||||
|
|
||||||
# Add file handler
|
# Add file handler by default unless explicitly disabled
|
||||||
file_handler = logging.handlers.RotatingFileHandler(
|
if enable_file_logging:
|
||||||
filename=log_file_path,
|
# Get log file path
|
||||||
maxBytes=log_max_bytes,
|
if log_file_path is None:
|
||||||
backupCount=log_backup_count,
|
log_dir = os.getenv("LOG_DIR", os.getcwd())
|
||||||
encoding="utf-8",
|
log_file_path = os.path.abspath(os.path.join(log_dir, "lightrag.log"))
|
||||||
)
|
|
||||||
file_handler.setFormatter(detailed_formatter)
|
# Ensure log directory exists
|
||||||
file_handler.setLevel(level)
|
os.makedirs(os.path.dirname(log_file_path), exist_ok=True)
|
||||||
logger_instance.addHandler(file_handler)
|
|
||||||
|
# Get log file max size and backup count from environment variables
|
||||||
|
log_max_bytes = int(os.getenv("LOG_MAX_BYTES", 10485760)) # Default 10MB
|
||||||
|
log_backup_count = int(os.getenv("LOG_BACKUP_COUNT", 5)) # Default 5 backups
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Add file handler
|
||||||
|
file_handler = logging.handlers.RotatingFileHandler(
|
||||||
|
filename=log_file_path,
|
||||||
|
maxBytes=log_max_bytes,
|
||||||
|
backupCount=log_backup_count,
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
file_handler.setFormatter(detailed_formatter)
|
||||||
|
file_handler.setLevel(level)
|
||||||
|
logger_instance.addHandler(file_handler)
|
||||||
|
except PermissionError as e:
|
||||||
|
logger.warning(f"Could not create log file at {log_file_path}: {str(e)}")
|
||||||
|
logger.warning("Continuing with console logging only")
|
||||||
|
|
||||||
# Add path filter if requested
|
# Add path filter if requested
|
||||||
if add_filter:
|
if add_filter:
|
||||||
|
Reference in New Issue
Block a user