python异常信息处理(Python使用修饰器进行异常日志记录操作示例)
python异常信息处理
Python使用修饰器进行异常日志记录操作示例本文实例讲述了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文件中可以看到以下错误信息:
[2017-11-26 23:37:41,012-test_log-ERROR]: [Error in __main__] msg: integer liision 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
ZeroliisionError: integer liision 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程序设计有所帮助。
原文链接:https://www.cnblogs.com/arkenstone/p/7901065.html
- python中的迭代器详解(Python通过for循环理解迭代器和生成器实例详解)
- python图文生成器(Python生成器的使用方法和示例代码)
- python列出文件夹下所有文件(python批量修改文件夹及其子文件夹下的文件内容)
- python实现简单加密(Python 隐藏输入密码时屏幕回显的实例)
- python中字符串截取规则(Python中的字符串切片截取字符串的详解)
- python3语法规则(Python3解释器知识点总结)
- python教程列表排序(Python一行代码实现快速排序的方法)
- python怎么去掉字符串的空格(Python切片操作去除字符串首尾的空格)
- python中的pandas功能(Python常见的pandas用法demo示例)
- 12步轻松搞定python装饰器(Python3.5装饰器典型案例分析)
- linux下python安装pip(在Docker中的ubuntu中安装Python3和Pip的问题)
- python静态方法和类方法的区别(Python实例方法、类方法、静态方法的区别与作用详解)
- 未来10年python前景(Python应用领域和就业形势分析总结)
- python 文本分析 摘要(用Python逐行分析文件方法)
- python实现linux服务(Python实现Linux监控的方法)
- python经典算法(浅谈python常用程序算法)
- 吴彦祖陈冠希 恩怨 ,失去曾让他流泪的女友,终遇走过18年真爱(吴彦祖陈冠希恩怨)
- 痴情男神 吴彦祖 与妻子恋爱8年,结婚10年,家庭幸福美满(痴情男神吴彦祖)
- 成功破圈,小牛电动SQi强势开 跨(小牛电动SQi强势开)
- 挑战新国标电自天花板,九号机械师MMAX 110P深度体验(挑战新国标电自天花板)
- 《满江红》不要只当电影看,学生应该这样做(满江红不要只当电影看)
- 电影《民间怪谈录之走阴人》定档8月5日,开启一场中式惊悚之旅(电影民间怪谈录之走阴人定档8月5日)
热门推荐
- nginx django部署(uwsgi+nginx代理Django无法访问静态资源的解决)
- sqlserver删除表的第一行数据(sql server删除前1000行数据的方法实例)
- python3中super函数的基本用法(实例讲解Python3中abs函数)
- pandas删除存在空值的列(详解pandas.DataFrame中删除包涵特定字符串所在的行)
- 移动端获取点击坐标
- 使用NuGet管理项目的DLL
- html正确的颜色表达方式(HTML文本属性&颜色控制属性的实现)
- 微信小程序js 抽奖概率(小程序实现筛子抽奖)
- 香港云主机推荐(香港云主机租用如何选择操作系统?)
- laravel5开发规范(laravel5.1框架基础之路由详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9