亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2019年07月11日 16:21:06   作者:Memory_qq312141830  
今天小編就為大家分享一篇python使用裝飾器作日志處理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

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

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

```
#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):#帶參數(shù)的裝飾器需要2層裝飾器實(shí)現(xiàn),第一層傳參數(shù),第二層傳函數(shù),每層函數(shù)在上一層返回
 def decorator(func):
 def inner(*args, **kwargs): #1
  logFilePath = filename # 日志按日期滾動(dòng),保留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使用裝飾器作日志處理的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論