这篇文章主要介绍了python如何使用装饰器作日志处理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联建站是一家集网站建设,会同企业网站建设,会同品牌网站建设,网站定制,会同网站建设报价,网络营销,网络优化,会同网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。第一个是不带参数的装饰器用法示例,功能相当于给函数包了层异常处理,第二个是带参数的装饰器用法示例,将日志输出到文件。
``` #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如何使用装饰器作日志处理”这篇文章对大家有帮助,同时也希望大家多多支持创新互联成都网站设计公司,关注创新互联成都网站设计公司行业资讯频道,更多相关知识等着你来学习!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、网站设计器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。