python中用修饰器进行异常日志记录
2017-11-26 23:40
411 查看
当脚本中需要进行的的相同的异常操作很多的时候,可以用修饰器来简化代码。比如我需要记录抛出的异常:
在log_exception.py文件中,
在test.py文件中:
在test.log文件中可以看到以下错误信息:
参考:
https://wiki.python.org/moin/PythonDecorators
https://www.blog.pythonlibrary.org/2016/06/09/python-how-to-create-an-exception-logging-decorator/
在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 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
参考:
https://wiki.python.org/moin/PythonDecorators
https://www.blog.pythonlibrary.org/2016/06/09/python-how-to-create-an-exception-logging-decorator/
相关文章推荐
- python中利用logging包进行日志记录时的logging.level设置选择
- struts2全局异常处理及配合log4j进行异常日志记录
- python对运行程序进行日志文件记录
- python日志记录完整的异常信息traceback stack
- python中如何用sys.excepthook来对全局异常进行捕获、显示及输出到error日志中
- 学习AOP--异常日志和操作日志的记录
- 我在项目中Springmvc处理异常并记录日志(一) ps:如何有更好的方法,请写到评论中多多交流,谢谢!
- Python异常记录
- Python-模块和包.深入Celery之任务绑定/记录日志/自动重试
- Spring AOP进行日志记录,管理
- Python的日志记录-logging模块的使用
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- 文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式
- python logging重复记录日志问题的解决方法
- unity3d使用Log4.net进行日志记录
- Android中处理崩溃异常和记录日志(转)
- 在云环境上使用SLF4J对Java程序进行日志记录
- 使用Spring进行统一日志管理 + 统一异常管理
- 从壹开始前后端分离 [.netCore 不定期更新 ] 三十五║ 完美实现全局异常日志记录
- tomcat7 使用log4j进行日志记录