时间:2021-05-22
本文实例讲述了Python使用修饰器进行异常日志记录操作。分享给大家供大家参考,具体如下:
当脚本中需要进行的的相同的异常操作很多的时候,可以用修饰器来简化代码。比如我需要记录抛出的异常:
在log_exception.py文件中,
import functoolsimport loggingdef 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 loggerdef 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_exceptiondef reciprocal(x): return 1/xif __name__ == "__main__": reciprocal(0)在test.log文件中可以看到以下错误信息:
[2017-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
参考:
1. https://wiki.python.org/moin/PythonDecorators
2. https://www.blog.pythonlibrary.org/2016/06/09/python-how-to-create-an-exception-logging-decorator/
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python日志操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了python自动化测试之异常及日志操作。分享给大家供大家参考,具体如下: 为了保持自动化测试用例的健壮性,异常的捕获及处理,日志的记录对掌握自动
WEB使用记录挖掘是WEB数据挖掘技术应用的重要方面,在WEB服务器实际运行时,能够将客户所有的操作以日志的形式进行记录,对这些记录进行分析能够对站点结构进行有
使用logging模块,记录日志信息安装模块pip3installlogging脚本示例vimflask_api_logging.py#!/usr/bin/en
本文实例讲述了Laravel框架实现利用中间件进行操作日志记录功能。分享给大家供大家参考,具体如下:利用中间件进行操作日志记录过程:1、创建中间件phparti
下面是示例代码,在发生异常的时候会将异常信息存入日志表中,并继续运行后面的语句.如果您有更好的建议,望不吝赐教.存储过程异常处理示例复制代码代码如下:-----