日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python使用裝飾器作日志處理的方法

系統 1881 0

裝飾器這東西我看了一會兒才明白,在函數外面套了一層函數,感覺和java里的aop功能很像;寫了2個裝飾器日志的例子,

第一個是不帶參數的裝飾器用法示例,功能相當于給函數包了層異常處理,第二個是帶參數的裝飾器用法示例,將日志輸出到文件。

            
```
#coding=utf8
import traceback
import logging
from logging.handlers import TimedRotatingFileHandler
def logger(func):
 def inner(*args, **kwargs): #1
 try:
  #print "Arguments were: %s, %s" % (args, kwargs)
  func(*args, **kwargs) #2
 except:
  #print 'error',traceback.format_exc()
  print 'error'
 return inner


def loggerInFile(filename):#帶參數的裝飾器需要2層裝飾器實現,第一層傳參數,第二層傳函數,每層函數在上一層返回
 def decorator(func):
 def inner(*args, **kwargs): #1
  logFilePath = filename # 日志按日期滾動,保留5天
  logger = logging.getLogger()
  logger.setLevel(logging.INFO)
  handler = TimedRotatingFileHandler(logFilePath,
       when="d",
       interval=1,
       backupCount=5)
  formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
  handler.setFormatter(formatter)
  logger.addHandler(handler)
  try:
  #print "Arguments were: %s, %s" % (args, kwargs)
  result = func(*args, **kwargs) #2
  logger.info(result)
  except:
  logger.error(traceback.format_exc())
 return inner
 return decorator

@logger
def test():
 print 2/0

test()


@loggerInFile('newloglog')
def test2(n):
 print 100/n

test2(10)
test2(0)
print 'end'
```

          

以上這篇python使用裝飾器作日志處理的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 吴旗县| 松原市| 沽源县| 连江县| 宁城县| 于都县| 西和县| 交城县| 西安市| 阿克| 潞城市| 阜新| 鸡泽县| 宁陕县| 广水市| 安福县| 涞水县| 资阳市| 县级市| 宁都县| 柯坪县| 磐石市| 米易县| 海淀区| 义马市| 新竹县| 讷河市| 桃江县| 体育| 铅山县| 恩施市| 唐河县| 临海市| 珠海市| 克东县| 综艺| 开原市| 红桥区| 五指山市| 常德市| 肥城市|