Spaces:
Runtime error
Runtime error
File size: 1,311 Bytes
4ff4028 7c37fc5 4ff4028 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import sys
import os
from pathlib import Path
from functools import wraps
from loguru import logger
from rich.progress import Progress, SpinnerColumn, TextColumn
def setup_logger(log_file):
"""Set up the logger with a file and console handler."""
os.makedirs(Path(log_file).parent, exist_ok=True)
logger.remove()
logger.add(
sys.stderr,
format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>",
)
logger.add(log_file, rotation="1MB", retention="7 days", encoding="utf-8")
def task_wrapper(func):
"""Wrapper to log the start and end of a task."""
@wraps(func)
def wrapper(*args, **kwargs):
func_name = func.__name__
logger.info(f"Starting {func_name}")
try:
result = func(*args, **kwargs)
logger.info(f"Finished {func_name}")
return result
except Exception as e:
logger.exception(f"Error in {func_name}: {str(e)}")
raise
return wrapper
def get_rich_progress():
"""Get a Rich Progress object."""
return Progress(
SpinnerColumn(),
TextColumn("[progress.description]{task.description}"),
transient=True,
)
|