From 48fb7a00951f91bdc707e5dd2d196e5bccb752c3 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期三, 18 六月 2025 18:41:30 +0800 Subject: [PATCH] 异常保护 --- log_module/async_log_util.py | 102 +++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 78 insertions(+), 24 deletions(-) diff --git a/log_module/async_log_util.py b/log_module/async_log_util.py index de63946..cac3f10 100644 --- a/log_module/async_log_util.py +++ b/log_module/async_log_util.py @@ -1,56 +1,110 @@ """ 寮傛鏃ュ織绠$悊鍣� """ +import logging import queue +import threading import time -from log_module.log import logger_debug +from log_module.log import logger_debug, logger_system from utils import tool -log_queue = queue.Queue() + +class AsyncLogManager: + + def __init__(self): + self.__log_queue = queue.Queue(maxsize=10240) + + def __add_log(self, logger, method, *args): + try: + self.__log_queue.put_nowait((logger, time.time(), method, args)) + except Exception: + pass + + def add_log(self, data): + try: + self.__log_queue.put_nowait(data) + except Exception: + pass + + def debug(self, logger, *args): + self.__add_log(logger, "debug", *args) + + def info(self, logger, *args): + self.__add_log(logger, "info", *args) + + def warning(self, logger, *args): + self.__add_log(logger, "warning", *args) + + def error(self, logger, *args): + self.__add_log(logger, "error", *args) + + def exception(self, logger, *args): + self.__add_log(logger, "exception", *args) + + def get_queue_size(self): + """ + 鑾峰彇闃熷垪澶у皬 + @return: + """ + self.__log_queue.qsize() + + # 杩愯鍚屾鏃ュ織 + def run_sync(self, add_to_common_log=False): + # print("run_sync", add_to_common_log) + logger_system.info(f"run_sync 绾跨▼ID:{tool.get_thread_id()}") + while True: + try: + val = self.__log_queue.get() + if not add_to_common_log: + time_s = val[1] + cmd = val[2] + method = getattr(val[0], cmd) + d = list(val[3]) + d[0] = f"[{tool.to_time_str(int(time_s))}.{str(time_s).split('.')[1][:6]}] " + d[0] + d = tuple(d) + method(*d) + else: + _common_log.add_log(val) + except Exception as e: + logging.exception(e) -def __add_log(logger, method, *args): - log_queue.put_nowait((logger, time.time(), method, args)) +l2_data_log = AsyncLogManager() + +huaxin_l2_log = AsyncLogManager() + +_common_log = AsyncLogManager() def debug(logger, *args): - __add_log(logger, "debug", *args) + _common_log.debug(logger, *args) def info(logger, *args): - __add_log(logger, "info", *args) + _common_log.info(logger, *args) def warning(logger, *args): - __add_log(logger, "warning", *args) + _common_log.warning(logger, *args) def error(logger, *args): - __add_log(logger, "error", *args) + _common_log.error(logger, *args) def exception(logger, *args): - __add_log(logger, "exception", *args) + _common_log.exception(logger, *args) # 杩愯鍚屾鏃ュ織 def run_sync(): - while True: - try: - val = log_queue.get() - time_s = val[1] - cmd = val[2] - method = getattr(val[0], cmd) - d = list(val[3]) - d[0] = f"[{tool.to_time_str(int(time_s))}.{str(time_s).split('.')[1][:3]}] " + d[0] - d = tuple(d) - method(*d) - except: - pass + logger_system.info(f"async_log 绾跨▼ID:{tool.get_thread_id()}") + _common_log.run_sync() if __name__ == "__main__": - # info(logger_debug, "*-{}", "test") - info(logger_debug, "123123") - run_sync() + _queue = queue.Queue(maxsize=102400) + for i in range(200): + _queue.put_nowait("1") + -- Gitblit v1.8.0