中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python使用修飾器進行異常日志記錄操作示例

發布時間:2020-09-13 18:06:27 來源:腳本之家 閱讀:152 作者:Arkenstone 欄目:開發技術

本文實例講述了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 "<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程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇赉县| 德清县| 墨江| 五峰| 津市市| 延吉市| 汉中市| 崇仁县| 噶尔县| 靖宇县| 北流市| 紫云| 宣化县| 荣昌县| 曲松县| 图木舒克市| 灌阳县| 前郭尔| 资讯| 天镇县| 灵璧县| 南靖县| 永丰县| 黄浦区| 白河县| 宜良县| 华蓥市| 旬邑县| 巴彦淖尔市| 永春县| 屏东市| 卓资县| 比如县| 六枝特区| 利津县| 新丰县| 康保县| 岑巩县| 招远市| 息烽县| 东源县|