Spaces:
Paused
Paused
| from loguru import logger | |
| import logging | |
| import sys | |
| import os | |
| def chat_log_filter(record): | |
| return "chat_msg" in record["extra"] | |
| def not_chat_log_filter(record): | |
| return "chat_msg" not in record["extra"] | |
| def formatter_with_clip(record): | |
| # Note this function returns the string to be formatted, not the actual message to be logged | |
| # record["extra"]["serialized"] = "555555" | |
| max_len = 12 | |
| record['function_x'] = record['function'].center(max_len) | |
| if len(record['function_x']) > max_len: | |
| record['function_x'] = ".." + record['function_x'][-(max_len-2):] | |
| record['line_x'] = str(record['line']).ljust(3) | |
| return '<green>{time:HH:mm}</green> | <cyan>{function_x}</cyan>:<cyan>{line_x}</cyan> | <level>{message}</level>\n' | |
| def setup_logging(PATH_LOGGING): | |
| admin_log_path = os.path.join(PATH_LOGGING, "admin") | |
| os.makedirs(admin_log_path, exist_ok=True) | |
| sensitive_log_path = os.path.join(admin_log_path, "chat_secrets.log") | |
| regular_log_path = os.path.join(admin_log_path, "console_log.log") | |
| logger.remove() | |
| logger.configure( | |
| levels=[dict(name="WARNING", color="<g>")], | |
| ) | |
| logger.add( | |
| sys.stderr, | |
| format=formatter_with_clip, | |
| # format='<green>{time:HH:mm}</green> | <cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>', | |
| filter=(lambda record: not chat_log_filter(record)), | |
| colorize=True, | |
| enqueue=True | |
| ) | |
| logger.add( | |
| sensitive_log_path, | |
| format='<green>{time:MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>', | |
| rotation="10 MB", | |
| filter=chat_log_filter, | |
| enqueue=True, | |
| ) | |
| logger.add( | |
| regular_log_path, | |
| format='<green>{time:MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>', | |
| rotation="10 MB", | |
| filter=not_chat_log_filter, | |
| enqueue=True, | |
| ) | |
| logging.getLogger("httpx").setLevel(logging.WARNING) | |
| logger.warning(f"所有对话记录将自动保存在本地目录{sensitive_log_path}, 请注意自我隐私保护哦!") | |
| # logger.bind(chat_msg=True).info("This message is logged to the file!") | |
| # logger.debug(f"debug message") | |
| # logger.info(f"info message") | |
| # logger.success(f"success message") | |
| # logger.error(f"error message") | |
| # logger.add("special.log", filter=lambda record: "special" in record["extra"]) | |
| # logger.debug("This message is not logged to the file") | |