|  | import os | 
					
						
						|  | import sys | 
					
						
						|  | import logging | 
					
						
						|  | import logzero | 
					
						
						|  | import config | 
					
						
						|  | from logging.handlers import TimedRotatingFileHandler | 
					
						
						|  |  | 
					
						
						|  | logzero.loglevel(logging.WARNING) | 
					
						
						|  | logger = logging.getLogger("vits-simple-api") | 
					
						
						|  | level = getattr(config, "LOGGING_LEVEL", "DEBUG") | 
					
						
						|  | level_dict = {'DEBUG': logging.DEBUG, 'INFO': logging.INFO, 'WARNING': logging.WARNING, 'ERROR': logging.ERROR, | 
					
						
						|  | 'CRITICAL': logging.CRITICAL} | 
					
						
						|  | logging.basicConfig(level=level_dict[level]) | 
					
						
						|  | logging.getLogger('numba').setLevel(logging.WARNING) | 
					
						
						|  | logging.getLogger("langid.langid").setLevel(logging.INFO) | 
					
						
						|  | logging.getLogger("apscheduler.scheduler").setLevel(logging.INFO) | 
					
						
						|  |  | 
					
						
						|  | os.makedirs(config.LOGS_PATH, exist_ok=True) | 
					
						
						|  | log_file = os.path.join(config.LOGS_PATH, 'latest.log') | 
					
						
						|  | backup_count = getattr(config, "LOGS_BACKUPCOUNT", 30) | 
					
						
						|  | handler = TimedRotatingFileHandler(log_file, when="midnight", interval=1, backupCount=backup_count, encoding='utf-8') | 
					
						
						|  | handler.suffix = "%Y-%m-%d.log" | 
					
						
						|  | formatter = logging.Formatter('%(levelname)s:%(name)s %(message)s') | 
					
						
						|  | handler.setFormatter(formatter) | 
					
						
						|  | logger.addHandler(handler) | 
					
						
						|  |  | 
					
						
						|  | logging.getLogger("werkzeug").addHandler(handler) | 
					
						
						|  | logging.getLogger("apscheduler.scheduler").addHandler(handler) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def handle_exception(exc_type, exc_value, exc_traceback): | 
					
						
						|  |  | 
					
						
						|  | 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)) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | sys.excepthook = handle_exception | 
					
						
						|  |  |