jtyoui.logger.logDecorator 源代码

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time  : 2019/8/29 9:11
# @Author: Jtyoui@qq.com
import functools
import logging
from jtyoui.logger.Log import set_log_file_config, get_log_config
import os


[文档]def log(log_file, config_file=None): """日志装饰器,用于测试函数的时候打印日志 关于日志配置:可以参考官网配置: https://docs.python.org/3.7/library/logging.config.html :param log_file: 日志地址保存地方 :param config_file: 日志配置地址保存地址 """ def inner(fun): set_log_file_config(get_log_config(config_path=config_file, custom_dir=log_file)) @functools.wraps(fun) def wraps(*args, **kwargs): try: logging.getLogger('info').info(f'正在执行:{fun.__name__}函数') f = fun(*args, **kwargs) logging.getLogger('info').info(f'执行完毕:{fun.__name__}函数') return f except Exception as e: logging.getLogger('info').error(f'执行:{fun.__name__}函数异常,异常信息:{str(e)}') with open(log_file + os.sep + 'error.log', 'a', newline='\n')as f: f.write('+' * 70 + os.linesep) logging.getLogger('error').exception(e) with open(log_file + os.sep + 'error.log', 'a', newline='\n')as f: f.write('#' * 70 + os.linesep + os.linesep) raise e return wraps return inner
if __name__ == '__main__': @log('./ger', None) def division(): s = 1 / 0 return s division()