您好,登錄后才能下訂單哦!
這篇文章主要介紹了python如何使用裝飾器作日志處理,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
第一個是不帶參數(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如何使用裝飾器作日志處理”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。