日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 修饰器_python中用修饰器进行异常日志记录

發布時間:2024/9/19 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 division or modulo by zero

Traceback (most recent call last):

File "", line 16, in wrapper

fn(*args, **kwargs)

File "", line 3, in reciprocal

return 1/x

ZeroDivisionError: integer division or modulo by zero

參考:

總結

以上是生活随笔為你收集整理的python 修饰器_python中用修饰器进行异常日志记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。