python使用裝飾器作日志處理的方法
裝飾器這東西我看了一會兒才明白,在函數(shù)外面套了一層函數(shù),感覺和java里的aop功能很像;寫了2個裝飾器日志的例子,
第一個是不帶參數(shù)的裝飾器用法示例,功能相當于給函數(shù)包了層異常處理,第二個是帶參數(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層裝飾器實現(xiàn),第一層傳參數(shù),第二層傳函數(shù),每層函數(shù)在上一層返回
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使用裝飾器作日志處理的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python使用xlsx和pandas處理Excel表格的操作步驟
python的神器pandas庫就可以非常方便地處理excel,csv,矩陣,表格 等數(shù)據(jù),下面這篇文章主要給大家介紹了關于python使用xlsx和pandas處理Excel表格的操作步驟,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-01-01
Python數(shù)據(jù)可視化之matplotlib.pyplot繪圖的基本參數(shù)詳解
matplotlib.pyplot模塊是一個功能強大的畫圖模塊,可以對畫圖的多個參數(shù)進行調(diào)整,下面這篇文章主要給大家介紹了關于Python數(shù)據(jù)可視化之matplotlib.pyplot繪圖基本參數(shù)的相關資料,需要的朋友可以參考下2022-04-04
Python借助with語句實現(xiàn)代碼段只執(zhí)行有限次
這篇文章主要介紹了Python借助with語句實現(xiàn)代碼段只執(zhí)行有限次,首先要定義一個能夠在with語句中使用的類實現(xiàn)enter和exit,下文詳細介紹需要的小伙伴可以參考一下2022-03-03
如何通過雪花算法用Python實現(xiàn)一個簡單的發(fā)號器
這篇文章主要介紹了如何通過雪花算法用Python實現(xiàn)一個簡單的發(fā)號器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07
python 輸入字符串生成所有有效的IP地址(LeetCode 93號題)
這篇文章主要介紹了python 生成所有有效的IP地址的方法,幫助大家解答題目,學習python,感興趣的朋友可以了解下2020-10-10

