Spaces:
Sleeping
Sleeping
Upload utils/logger.py with huggingface_hub
Browse files- utils/logger.py +57 -29
utils/logger.py
CHANGED
|
@@ -128,10 +128,24 @@ class CustomFormatter(logging.Formatter):
|
|
| 128 |
def setup_logging():
|
| 129 |
"""Setup comprehensive logging configuration"""
|
| 130 |
|
| 131 |
-
#
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 135 |
|
| 136 |
# Configure root logger
|
| 137 |
logging.basicConfig(
|
|
@@ -153,21 +167,24 @@ def setup_logging():
|
|
| 153 |
tx_logger.setLevel(logging.INFO)
|
| 154 |
|
| 155 |
# Add file handlers if enabled
|
| 156 |
-
if
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
|
|
|
|
|
|
|
|
|
| 171 |
|
| 172 |
# Console handler for development
|
| 173 |
if settings.is_development():
|
|
@@ -279,10 +296,18 @@ def setup_logger(
|
|
| 279 |
if logger.handlers:
|
| 280 |
return logger
|
| 281 |
|
| 282 |
-
# Create logs directory if it doesn't exist
|
|
|
|
| 283 |
if log_to_file and settings.LOG_FILE_ENABLED:
|
| 284 |
-
|
| 285 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 286 |
|
| 287 |
# Create formatters
|
| 288 |
detailed_formatter = logging.Formatter(
|
|
@@ -304,13 +329,16 @@ def setup_logger(
|
|
| 304 |
|
| 305 |
# File handler
|
| 306 |
if log_to_file and settings.LOG_FILE_ENABLED:
|
| 307 |
-
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
|
| 313 |
-
|
|
|
|
|
|
|
|
|
|
| 314 |
|
| 315 |
return logger
|
| 316 |
|
|
|
|
| 128 |
def setup_logging():
|
| 129 |
"""Setup comprehensive logging configuration"""
|
| 130 |
|
| 131 |
+
# Determine log path - use /tmp on cloud platforms (HF Spaces, etc.)
|
| 132 |
+
log_file_enabled = settings.LOG_FILE_ENABLED
|
| 133 |
+
log_file_path = settings.LOG_FILE_PATH
|
| 134 |
+
|
| 135 |
+
# Try to create logs directory, fall back to /tmp or disable if fails
|
| 136 |
+
if log_file_enabled:
|
| 137 |
+
try:
|
| 138 |
+
log_path = Path(log_file_path)
|
| 139 |
+
log_path.parent.mkdir(parents=True, exist_ok=True)
|
| 140 |
+
except PermissionError:
|
| 141 |
+
# Fall back to /tmp for cloud environments
|
| 142 |
+
log_file_path = "/tmp/app.log"
|
| 143 |
+
try:
|
| 144 |
+
Path(log_file_path).parent.mkdir(parents=True, exist_ok=True)
|
| 145 |
+
except PermissionError:
|
| 146 |
+
# Disable file logging if we can't write anywhere
|
| 147 |
+
log_file_enabled = False
|
| 148 |
+
print("[LOGGER] Warning: Cannot create log directory, file logging disabled")
|
| 149 |
|
| 150 |
# Configure root logger
|
| 151 |
logging.basicConfig(
|
|
|
|
| 167 |
tx_logger.setLevel(logging.INFO)
|
| 168 |
|
| 169 |
# Add file handlers if enabled
|
| 170 |
+
if log_file_enabled:
|
| 171 |
+
try:
|
| 172 |
+
# Rotating file handler for general logs
|
| 173 |
+
file_handler = logging.handlers.RotatingFileHandler(
|
| 174 |
+
log_file_path,
|
| 175 |
+
maxBytes=settings.LOG_FILE_MAX_SIZE,
|
| 176 |
+
backupCount=settings.LOG_FILE_BACKUP_COUNT
|
| 177 |
+
)
|
| 178 |
+
file_handler.setFormatter(CustomFormatter(
|
| 179 |
+
'%(asctime)s - %(environment)s - %(name)s - %(levelname)s - %(message)s'
|
| 180 |
+
))
|
| 181 |
+
|
| 182 |
+
# Add to all loggers
|
| 183 |
+
app_logger.addHandler(file_handler)
|
| 184 |
+
perf_logger.addHandler(file_handler)
|
| 185 |
+
tx_logger.addHandler(file_handler)
|
| 186 |
+
except PermissionError:
|
| 187 |
+
print("[LOGGER] Warning: Cannot create log file, file logging disabled")
|
| 188 |
|
| 189 |
# Console handler for development
|
| 190 |
if settings.is_development():
|
|
|
|
| 296 |
if logger.handlers:
|
| 297 |
return logger
|
| 298 |
|
| 299 |
+
# Create logs directory if it doesn't exist - use /tmp as fallback
|
| 300 |
+
log_file_path = settings.LOG_FILE_PATH
|
| 301 |
if log_to_file and settings.LOG_FILE_ENABLED:
|
| 302 |
+
try:
|
| 303 |
+
log_path = Path(log_file_path)
|
| 304 |
+
log_path.parent.mkdir(parents=True, exist_ok=True)
|
| 305 |
+
except PermissionError:
|
| 306 |
+
log_file_path = "/tmp/app.log"
|
| 307 |
+
try:
|
| 308 |
+
Path(log_file_path).parent.mkdir(parents=True, exist_ok=True)
|
| 309 |
+
except PermissionError:
|
| 310 |
+
log_to_file = False
|
| 311 |
|
| 312 |
# Create formatters
|
| 313 |
detailed_formatter = logging.Formatter(
|
|
|
|
| 329 |
|
| 330 |
# File handler
|
| 331 |
if log_to_file and settings.LOG_FILE_ENABLED:
|
| 332 |
+
try:
|
| 333 |
+
file_handler = logging.handlers.RotatingFileHandler(
|
| 334 |
+
log_file_path,
|
| 335 |
+
maxBytes=settings.LOG_FILE_MAX_SIZE,
|
| 336 |
+
backupCount=settings.LOG_FILE_BACKUP_COUNT
|
| 337 |
+
)
|
| 338 |
+
file_handler.setFormatter(detailed_formatter)
|
| 339 |
+
logger.addHandler(file_handler)
|
| 340 |
+
except PermissionError:
|
| 341 |
+
pass # Skip file logging if permission denied
|
| 342 |
|
| 343 |
return logger
|
| 344 |
|