Base code
This commit is contained in:
53
backend/utils/logger_utils.py
Normal file
53
backend/utils/logger_utils.py
Normal file
@@ -0,0 +1,53 @@
|
||||
"""
|
||||
Logger utilities to prevent conflicts between different logging configurations.
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
import sys
|
||||
|
||||
|
||||
def safe_logger_config(format_string: str, level: str = "INFO"):
|
||||
"""
|
||||
Safely configure logger without removing existing handlers.
|
||||
This prevents conflicts with the main logging configuration.
|
||||
|
||||
Args:
|
||||
format_string: Log format string
|
||||
level: Log level
|
||||
"""
|
||||
try:
|
||||
# Only add a new handler if we don't already have one with this format
|
||||
existing_handlers = logger._core.handlers
|
||||
for handler in existing_handlers:
|
||||
if hasattr(handler, '_sink') and handler._sink == sys.stdout:
|
||||
# Check if format is similar to avoid duplicates
|
||||
if hasattr(handler, '_format') and handler._format == format_string:
|
||||
return # Handler already exists with this format
|
||||
|
||||
# Add new handler only if needed
|
||||
logger.add(
|
||||
sys.stdout,
|
||||
level=level,
|
||||
format=format_string,
|
||||
colorize=True
|
||||
)
|
||||
except Exception as e:
|
||||
# If there's any error, just use the existing logger configuration
|
||||
pass
|
||||
|
||||
|
||||
def get_service_logger(service_name: str, format_string: str = None):
|
||||
"""
|
||||
Get a logger for a specific service without conflicting with main configuration.
|
||||
|
||||
Args:
|
||||
service_name: Name of the service
|
||||
format_string: Optional custom format string
|
||||
|
||||
Returns:
|
||||
Logger instance
|
||||
"""
|
||||
if format_string:
|
||||
safe_logger_config(format_string)
|
||||
|
||||
return logger.bind(service=service_name)
|
||||
Reference in New Issue
Block a user