Merge pull request #1111 from spo0nman/pkaushal/logging
Add ability to conditionally disable file logging
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,6 +138,21 @@ def setup_logger(
|
|||||||
console_handler.setLevel(level)
|
console_handler.setLevel(level)
|
||||||
logger_instance.addHandler(console_handler)
|
logger_instance.addHandler(console_handler)
|
||||||
|
|
||||||
|
# Add file handler by default unless explicitly disabled
|
||||||
|
if enable_file_logging:
|
||||||
|
# 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
|
||||||
|
|
||||||
|
try:
|
||||||
# Add file handler
|
# Add file handler
|
||||||
file_handler = logging.handlers.RotatingFileHandler(
|
file_handler = logging.handlers.RotatingFileHandler(
|
||||||
filename=log_file_path,
|
filename=log_file_path,
|
||||||
@@ -158,6 +163,9 @@ def setup_logger(
|
|||||||
file_handler.setFormatter(detailed_formatter)
|
file_handler.setFormatter(detailed_formatter)
|
||||||
file_handler.setLevel(level)
|
file_handler.setLevel(level)
|
||||||
logger_instance.addHandler(file_handler)
|
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