Spaces:
Sleeping
Sleeping
File size: 3,696 Bytes
b363071 f7da8c2 b363071 f7da8c2 fc903d0 b363071 f7da8c2 4631983 f7da8c2 4631983 f7da8c2 4631983 b363071 4631983 b363071 bb8e523 4631983 b363071 fc903d0 99d7bc1 fc903d0 a51b69e b363071 bb8e523 f7da8c2 9686b28 b363071 bb8e523 f7da8c2 bb8e523 b363071 | 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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | import os
import re
import sys
import logging
import logzero
import warnings
from config import config, BASE_DIR
from logging.handlers import TimedRotatingFileHandler
# 过滤警告
class SpecificWarningFilter(logging.Filter):
def __init__(self, warning_messages):
super().__init__()
self.warning_messages = warning_messages
def filter(self, record):
return all(msg not in record.getMessage() for msg in self.warning_messages)
# 过滤警告
ignore_warning_messages = ["stft with return_complex=False is deprecated",
"1Torch was not compiled with flash attention",
"torch.nn.utils.weight_norm is deprecated",
"Some weights of the model checkpoint.*were not used.*initializing.*from the checkpoint.*",
]
for message in ignore_warning_messages:
warnings.filterwarnings(action="ignore", message=message)
class WarningFilter(logging.Filter):
def filter(self, record):
return record.levelno != logging.WARNING
logzero.loglevel(logging.WARNING)
logger = logging.getLogger("vits-simple-api")
level = config.log_config.logging_level.upper()
level_dict = {'DEBUG': logging.DEBUG, 'INFO': logging.INFO, 'WARNING': logging.WARNING, 'ERROR': logging.ERROR,
'CRITICAL': logging.CRITICAL}
logging.getLogger().setLevel(level_dict[level])
# formatter = logging.Formatter('%(levelname)s:%(name)s %(message)s')
# formatter = logging.Formatter('%(asctime)s [%(levelname)s] [%(module)s.%(funcName)s:%(lineno)d] %(message)s',
# datefmt='%Y-%m-%d %H:%M:%S')
# 根据日志级别选择日志格式
if level == "DEBUG":
formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s [in %(module)s.%(funcName)s:%(lineno)d]',
datefmt='%Y-%m-%d %H:%M:%S')
elif level == "INFO":
formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
else:
# 如果日志级别既不是DEBUG也不是INFO,则使用默认的日志格式
formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s [in %(module)s.%(funcName)s:%(lineno)d]',
datefmt='%Y-%m-%d %H:%M:%S')
logs_path = os.path.join(BASE_DIR, config.log_config.logs_path)
os.makedirs(logs_path, exist_ok=True)
log_file = os.path.join(logs_path, 'latest.log')
backup_count = config.log_config.logs_backup_count
handler = TimedRotatingFileHandler(log_file, when="midnight", interval=1, backupCount=backup_count, encoding='utf-8')
handler.suffix = "%Y-%m-%d.log"
handler.setFormatter(formatter)
# remove all handlers (remove StreamHandler handle)
logging.getLogger().handlers = []
logging.getLogger().addHandler(handler)
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)
logging.getLogger().addHandler(console_handler)
logging.getLogger('numba').setLevel(logging.WARNING)
logging.getLogger("langid.langid").setLevel(logging.INFO)
logging.getLogger("apscheduler.scheduler").setLevel(logging.INFO)
logging.getLogger("transformers.modeling_utils").addFilter(WarningFilter())
# Custom function to handle uncaught exceptions
def handle_exception(exc_type, exc_value, exc_traceback):
# If it's a keyboard interrupt, don't handle it, just return
if issubclass(exc_type, KeyboardInterrupt):
sys.__excepthook__(exc_type, exc_value, exc_traceback)
return
logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
# Set the global exception handler in Python
sys.excepthook = handle_exception
|