def trace(*args, **kv): index = self.index # 仅仅用于打印调试无需同步 self.index += 1 args_exclude_bytearray = tuple( x for x in args if not isinstance(x, (bytearray, bytes)) and x is not Ice.Unset) kv_exclude_bytearray = { key: value for key, value in kv.items() if not isinstance(value, (bytearray, bytes)) and value is not Ice.Unset } logger = self.logger if self.logger else xlogging.getLogger( fn.__module__, False) logger.debug(r'{index}:{fn_name} input args:{args} kv:{kv}'.format( index=index, fn_name=fn.__qualname__, args=args_exclude_bytearray, kv=kv_exclude_bytearray)) returned = fn(*args, **kv) logger.debug(r'{index}:{fn_name} return:{returned}'.format( index=index, fn_name=fn.__qualname__, returned=returned)) return returned
def handler(*args, **kv): try: return fn(*args, **kv) except xdata.DSSException as de: if not de.is_log: xlogging.getLogger(fn.__module__, False).error( f'{fn.__qualname__} raise DSSException:{de.msg} debug:{de.debug}', exc_info=True) raise except loadIce.ICE_UTILS.SystemError as se: fn_name = fn.__qualname__ fn_line = 0 _, _, http_status = self._get_msg_define(fn.__name__) debug = f'{fn_name} raise Utils.SystemError:{se.description} debug:{se.debug} raw_code:{se.rawCode}' xlogging.getLogger(fn.__module__, False).error(debug) raise xdata.DSSException(fn_name, se.description, debug, fn_line, http_status, True) except Ice.Exception as ie: fn_name = fn.__qualname__ fn_line = 0 debug = f'{fn_name} Ice.Exception:{ie}' xlogging.getLogger(fn.__module__, False).error(debug) msg, code, http_status = self._get_msg_define(fn.__name__) raise xdata.DSSException(fn_name, f'{msg}发生网络请求异常', debug, fn_line, http_status, True) except Exception as e: fn_name = fn.__qualname__ fn_line = 1 debug = f'{fn_name} Exception:{e}' self.get_logger(fn.__module__).error(debug, exc_info=True) msg, code, http_status = self._get_msg_define(fn.__name__) raise xdata.DSSException(fn_name, f'{msg}发生异常,代码{code}', debug, fn_line, http_status, True)
import decimal import functools import glob import os from basic_library import xdata from basic_library import xlogging from ice_service import service from storage_manager import models as m from storage_manager import valid_storage_directory as vsd _logger = xlogging.getLogger(__name__) def vsd_check_path(file_path): """检测文件路径是否在有效的快照存储目录中""" def _real_decorator(fn): @functools.wraps(fn) def wrapper(*args, **kv): vsd.check_path(file_path) r = fn(*args, **kv) vsd.check_path(file_path) return r return wrapper return _real_decorator def _remove_glob(path_glob): for path in glob.iglob(path_glob):
def get_logger(self, module_name): if self.logger is not None: return self.logger else: return xlogging.getLogger(module_name, False)