Пример #1
0
        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
Пример #2
0
        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)
Пример #3
0
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):
Пример #4
0
 def get_logger(self, module_name):
     if self.logger is not None:
         return self.logger
     else:
         return xlogging.getLogger(module_name, False)