Python装饰器实现日志输出

# -*- coding: utf-8 -*-
# @Time    : 2020/11/20 11:33
# @Author  : Wanghairui
# @function:
from functools import wraps
import logging


def _create_logger():
    logger = logging.getLogger('LogError')
    logger.setLevel(logging.ERROR)
    file_handler = logging.FileHandler(r'./MJlogs.log')

    log_format = '%(levelname)s %(asctime)s %(message)s'
    formatter = logging.Formatter(log_format)
    file_handler.setFormatter(formatter)

    logger.addHandler(file_handler)
    return logger


def logged(func):
    @wraps(func)
    def do_logging(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except Exception as e:
            logger = _create_logger()
            error_msg = 'And error has occurred at /' + func.__name__ + '\n'
            logger.exception(error_msg)
            return e
    return do_logging