美文网首页扣丁学堂Python培训
扣丁学堂Python培训之使用修饰器进行异常日志记录操作示例

扣丁学堂Python培训之使用修饰器进行异常日志记录操作示例

作者: 994d14631d16 | 来源:发表于2019-03-19 16:41 被阅读0次

  今天扣丁学堂Python培训老师给大家分享一篇关于Python使用修饰器进行异常日志记录操作,结合实例形式分析了Python基于修饰器的log日志文件操作的相关实现技巧,下面我们一起来看一下吧。

Python培训

当脚本中需要进行的的相同的异常操作很多的时候,可以用修饰器来简化代码。比如我需要记录抛出的异常:

在log_exception.py文件中,

import functools

import logging

def create_logger():

  logger = logging.getLogger("test_log")

  logger.setLevel(logging.INFO)

  fh = logging.FileHandler("test.log")

  fmt = "[%(asctime)s-%(name)s-%(levelname)s]: %(message)s"

  formatter = logging.Formatter(fmt)

  fh.setFormatter(formatter)

  logger.addHandler(fh)

  return logger

def log_exception(fn):

  @functools.wraps(fn)

  def wrapper(*args, **kwargs):

    logger = create_logger()

    try:

      fn(*args, **kwargs)

    except Exception as e:

      logger.exception("[Error in {}] msg: {}".format(__name__, str(e)))

      raise

  return wrapper

在test.py文件中:

from log_exception import log_exception

@log_exception

def reciprocal(x):

  return 1/x

if __name__ == "__main__":

  reciprocal(0)

在test.log文件中可以看到以下错误信息:

[2018-11-26 23:37:41,012-test_log-ERROR]: [Error in __main__] msg: integer division or modulo by zero

Traceback (most recent call last):

  File "<ipython-input-43-cfa2d18586a3>", line 16, in wrapper

    fn(*args, **kwargs)

  File "<ipython-input-46-37aa8ff0ba48>", line 3, in reciprocal

    return 1/x

ZeroDivisionError: integer division or modulo by zero

  以上就是关于扣丁学堂Python培训之使用修饰器进行异常日志记录操作示例的全部介绍,最后想要学好Python开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的Python学习路线图辅助学员学习,此外还有与时俱进的Python视频教程供大家学习,想要学好Python开发技术的小伙伴快快行动吧。

相关文章

网友评论

    本文标题:扣丁学堂Python培训之使用修饰器进行异常日志记录操作示例

    本文链接:https://www.haomeiwen.com/subject/afrnmqtx.html